View Javadoc
1   // Generated from org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4 by ANTLR 4.10.1
2   package org.apache.shardingsphere.sql.parser.autogen;
3   import org.antlr.v4.runtime.atn.*;
4   import org.antlr.v4.runtime.dfa.DFA;
5   import org.antlr.v4.runtime.*;
6   import org.antlr.v4.runtime.misc.*;
7   import org.antlr.v4.runtime.tree.*;
8   import java.util.List;
9   import java.util.Iterator;
10  import java.util.ArrayList;
11  
12  @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
13  public class SQLServerStatementParser extends Parser {
14  	static { RuntimeMetaData.checkVersion("4.10.1", RuntimeMetaData.VERSION); }
15  
16  	protected static final DFA[] _decisionToDFA;
17  	protected static final PredictionContextCache _sharedContextCache =
18  		new PredictionContextCache();
19  	public static final int
20  		T__0=1, BLOCK_COMMENT=2, INLINE_COMMENT=3, AND_=4, OR_=5, NOT_=6, TILDE_=7, 
21  		VERTICAL_BAR_=8, AMPERSAND_=9, SIGNED_LEFT_SHIFT_=10, SIGNED_RIGHT_SHIFT_=11, 
22  		CARET_=12, MOD_=13, COLON_=14, PLUS_=15, MINUS_=16, ASTERISK_=17, SLASH_=18, 
23  		BACKSLASH_=19, DOT_=20, DOT_ASTERISK_=21, SAFE_EQ_=22, DEQ_=23, EQ_=24, 
24  		NEQ_=25, GT_=26, GTE_=27, LT_=28, LTE_=29, POUND_=30, LP_=31, RP_=32, 
25  		LBE_=33, RBE_=34, LBT_=35, RBT_=36, COMMA_=37, DQ_=38, SQ_=39, BQ_=40, 
26  		QUESTION_=41, AT_=42, SEMI_=43, DOLLAR_=44, WS=45, SELECT=46, INSERT=47, 
27  		UPDATE=48, DELETE=49, CREATE=50, ALTER=51, DROP=52, TRUNCATE=53, SCHEMA=54, 
28  		GRANT=55, REVOKE=56, ADD=57, SET=58, TABLE=59, COLUMN=60, INDEX=61, CONSTRAINT=62, 
29  		PRIMARY=63, UNIQUE=64, FOREIGN=65, KEY=66, POSITION=67, PRECISION=68, 
30  		FUNCTION=69, TRIGGER=70, PROCEDURE=71, PROC=72, VIEW=73, INTO=74, VALUES=75, 
31  		WITH=76, UNION=77, DISTINCT=78, CASE=79, WHEN=80, CAST=81, TRIM=82, SUBSTRING=83, 
32  		FROM=84, NATURAL=85, JOIN=86, FULL=87, INNER=88, OUTER=89, LEFT=90, RIGHT=91, 
33  		CROSS=92, USING=93, WHERE=94, AS=95, ON=96, IF=97, ELSE=98, THEN=99, FOR=100, 
34  		TO=101, AND=102, OR=103, IS=104, NOT=105, NULL=106, TRUE=107, FALSE=108, 
35  		EXISTS=109, BETWEEN=110, IN=111, ALL=112, ANY=113, LIKE=114, ORDER=115, 
36  		GROUP=116, BY=117, ASC=118, DESC=119, HAVING=120, LIMIT=121, OFFSET=122, 
37  		BEGIN=123, COMMIT=124, ROLLBACK=125, SAVEPOINT=126, BOOLEAN=127, DOUBLE=128, 
38  		CHAR=129, CHARACTER=130, ARRAY=131, INTERVAL=132, DATE=133, TIME=134, 
39  		TIMESTAMP=135, LOCALTIME=136, LOCALTIMESTAMP=137, YEAR=138, QUARTER=139, 
40  		MONTH=140, WEEK=141, DAY=142, HOUR=143, MINUTE=144, SECOND=145, MICROSECOND=146, 
41  		MAX=147, MIN=148, SUM=149, COUNT=150, AVG=151, DEFAULT=152, CURRENT=153, 
42  		ENABLE=154, DISABLE=155, CALL=156, INSTANCE=157, PRESERVE=158, DO=159, 
43  		DEFINER=160, CURRENT_USER=161, SQL=162, CASCADED=163, LOCAL=164, CLOSE=165, 
44  		OPEN=166, NEXT=167, NAME=168, COLLATION=169, NAMES=170, INTEGER=171, REAL=172, 
45  		DECIMAL=173, TYPE=174, BIT=175, SMALLINT=176, INT=177, TINYINT=178, NUMERIC=179, 
46  		FLOAT=180, BIGINT=181, TEXT=182, VARCHAR=183, PERCENT=184, TIES=185, EXCEPT=186, 
47  		INTERSECT=187, USE=188, MERGE=189, LOOP=190, EXPAND=191, VIEWS=192, FAST=193, 
48  		FORCE=194, KEEP=195, PLAN=196, OPTIMIZE=197, SIMPLE=198, FORCED=199, HINT=200, 
49  		READ_ONLY=201, DATABASE=202, DECLARE=203, CURSOR=204, OF=205, RETURNS=206, 
50  		DATEPART=207, RETURN=208, READONLY=209, AT=210, PASSWORD=211, WITHOUT=212, 
51  		FOR_GENERATOR=213, BINARY=214, ESCAPE=215, HIDDEN_=216, MOD=217, PARTITION=218, 
52  		PARTITIONS=219, TOP=220, ROW=221, ROWS=222, UNKNOWN=223, XOR=224, ALWAYS=225, 
53  		CASCADE=226, CHECK=227, GENERATED=228, NO=229, OPTION=230, PRIVILEGES=231, 
54  		REFERENCES=232, USER=233, ROLE=234, START=235, TRANSACTION=236, ACTION=237, 
55  		ALGORITHM=238, AUTO=239, BLOCKERS=240, CLUSTERED=241, NONCLUSTERED=242, 
56  		COLLATE=243, COLUMNSTORE=244, CONTENT=245, CONVERT=246, YEARS=247, MONTHS=248, 
57  		WEEKS=249, DAYS=250, MINUTES=251, DENY=252, DETERMINISTIC=253, DISTRIBUTION=254, 
58  		DOCUMENT=255, DURABILITY=256, ENCRYPTED=257, END=258, FILESTREAM=259, 
59  		FILETABLE=260, FILLFACTOR=261, FOLLOWING=262, HASH=263, HEAP=264, IDENTITY=265, 
60  		INBOUND=266, OUTBOUND=267, UNBOUNDED=268, INFINITE=269, LOGIN=270, MASKED=271, 
61  		MAXDOP=272, MOVE=273, NOCHECK=274, NONE=275, OBJECT=276, OFF=277, ONLINE=278, 
62  		OVER=279, PAGE=280, PAUSED=281, PERIOD=282, PERSISTED=283, PRECEDING=284, 
63  		RANDOMIZED=285, RANGE=286, REBUILD=287, REPLICATE=288, REPLICATION=289, 
64  		RESUMABLE=290, ROWGUIDCOL=291, SAVE=292, SELF=293, SPARSE=294, SWITCH=295, 
65  		TRAN=296, TRANCOUNT=297, ZONE=298, EXECUTE=299, EXEC=300, SESSION=301, 
66  		CONNECT=302, CONNECTION=303, CATALOG=304, CONTROL=305, CONCAT=306, TAKE=307, 
67  		OWNERSHIP=308, DEFINITION=309, APPLICATION=310, ASSEMBLY=311, SYMMETRIC=312, 
68  		ASYMMETRIC=313, SERVER=314, RECEIVE=315, CHANGE=316, TRACE=317, TRACKING=318, 
69  		RESOURCES=319, SETTINGS=320, STATE=321, AVAILABILITY=322, CREDENTIAL=323, 
70  		ENDPOINT=324, EVENT=325, NOTIFICATION=326, LINKED=327, AUDIT=328, DDL=329, 
71  		XML=330, IMPERSONATE=331, SECURABLES=332, AUTHENTICATE=333, EXTERNAL=334, 
72  		ACCESS=335, ADMINISTER=336, BULK=337, OPERATIONS=338, UNSAFE=339, SHUTDOWN=340, 
73  		SCOPED=341, CONFIGURATION=342, DATASPACE=343, SERVICE=344, CERTIFICATE=345, 
74  		CONTRACT=346, ENCRYPTION=347, MASTER=348, DATA=349, SOURCE=350, FILE=351, 
75  		FORMAT=352, LIBRARY=353, FULLTEXT=354, MASK=355, UNMASK=356, MESSAGE=357, 
76  		REMOTE=358, BINDING=359, ROUTE=360, SECURITY=361, POLICY=362, AGGREGATE=363, 
77  		QUEUE=364, RULE=365, SYNONYM=366, COLLECTION=367, SCRIPT=368, KILL=369, 
78  		BACKUP=370, LOG=371, SHOWPLAN=372, SUBSCRIBE=373, QUERY=374, NOTIFICATIONS=375, 
79  		CHECKPOINT=376, SEQUENCE=377, ABORT_AFTER_WAIT=378, ALLOW_PAGE_LOCKS=379, 
80  		ALLOW_ROW_LOCKS=380, ALL_SPARSE_COLUMNS=381, BUCKET_COUNT=382, COLUMNSTORE_ARCHIVE=383, 
81  		COLUMN_ENCRYPTION_KEY=384, COLUMN_SET=385, COMPRESSION_DELAY=386, DATABASE_DEAULT=387, 
82  		DATA_COMPRESSION=388, DATA_CONSISTENCY_CHECK=389, ENCRYPTION_TYPE=390, 
83  		SYSTEM_TIME=391, SYSTEM_VERSIONING=392, TEXTIMAGE_ON=393, WAIT_AT_LOW_PRIORITY=394, 
84  		STATISTICS_INCREMENTAL=395, STATISTICS_NORECOMPUTE=396, ROUND_ROBIN=397, 
85  		SCHEMA_AND_DATA=398, SCHEMA_ONLY=399, SORT_IN_TEMPDB=400, IGNORE_DUP_KEY=401, 
86  		IMPLICIT_TRANSACTIONS=402, MAX_DURATION=403, MEMORY_OPTIMIZED=404, MIGRATION_STATE=405, 
87  		PAD_INDEX=406, REMOTE_DATA_ARCHIVE=407, FILESTREAM_ON=408, FILETABLE_COLLATE_FILENAME=409, 
88  		FILETABLE_DIRECTORY=410, FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME=411, 
89  		FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME=412, FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME=413, 
90  		FILTER_PREDICATE=414, HISTORY_RETENTION_PERIOD=415, HISTORY_TABLE=416, 
91  		LOCK_ESCALATION=417, DROP_EXISTING=418, ROW_NUMBER=419, FETCH=420, FIRST=421, 
92  		ONLY=422, MONEY=423, SMALLMONEY=424, DATETIMEOFFSET=425, DATETIME=426, 
93  		DATETIME2=427, SMALLDATETIME=428, NCHAR=429, NVARCHAR=430, NTEXT=431, 
94  		VARBINARY=432, IMAGE=433, SQL_VARIANT=434, UNIQUEIDENTIFIER=435, HIERARCHYID=436, 
95  		GEOMETRY=437, GEOGRAPHY=438, OUTPUT=439, INSERTED=440, DELETED=441, ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS=442, 
96  		ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES=443, DISABLE_BATCH_MODE_ADAPTIVE_JOINS=444, 
97  		DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK=445, DISABLE_DEFERRED_COMPILATION_TV=446, 
98  		DISABLE_INTERLEAVED_EXECUTION_TVF=447, DISABLE_OPTIMIZED_NESTED_LOOP=448, 
99  		DISABLE_OPTIMIZER_ROWGOAL=449, DISABLE_PARAMETER_SNIFFING=450, DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK=451, 
100 		DISABLE_TSQL_SCALAR_UDF_INLINING=452, DISALLOW_BATCH_MODE=453, ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS=454, 
101 		ENABLE_QUERY_OPTIMIZER_HOTFIXES=455, FORCE_DEFAULT_CARDINALITY_ESTIMATION=456, 
102 		FORCE_LEGACY_CARDINALITY_ESTIMATION=457, QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n=458, 
103 		QUERY_PLAN_PROFILE=459, EXTERNALPUSHDOWN=460, SCALEOUTEXECUTION=461, IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX=462, 
104 		KEEPFIXED=463, MAX_GRANT_PERCENT=464, MIN_GRANT_PERCENT=465, MAXRECURSION=466, 
105 		NO_PERFORMANCE_SPOOL=467, PARAMETERIZATION=468, QUERYTRACEON=469, RECOMPILE=470, 
106 		ROBUST=471, OPTIMIZE_FOR_SEQUENTIAL_KEY=472, DATA_DELETION=473, FILTER_COLUMN=474, 
107 		RETENTION_PERIOD=475, CONTAINMENT=476, PARTIAL=477, FILENAME=478, SIZE=479, 
108 		MAXSIZE=480, FILEGROWTH=481, UNLIMITED=482, KB=483, MB=484, GB=485, TB=486, 
109 		CONTAINS=487, MEMORY_OPTIMIZED_DATA=488, FILEGROUP=489, NON_TRANSACTED_ACCESS=490, 
110 		DB_CHAINING=491, TRUSTWORTHY=492, FORWARD_ONLY=493, SCROLL=494, STATIC=495, 
111 		KEYSET=496, DYNAMIC=497, FAST_FORWARD=498, SCROLL_LOCKS=499, OPTIMISTIC=500, 
112 		TYPE_WARNING=501, SCHEMABINDING=502, CALLER=503, INPUT=504, CALLED=505, 
113 		VARYING=506, OUT=507, OWNER=508, ATOMIC=509, LANGUAGE=510, LEVEL=511, 
114 		ISOLATION=512, SNAPSHOT=513, REPEATABLE=514, READ=515, SERIALIZABLE=516, 
115 		NATIVE_COMPILATION=517, VIEW_METADATA=518, AFTER=519, INSTEAD=520, APPEND=521, 
116 		INCREMENT=522, CYCLE=523, CACHE=524, MINVALUE=525, MAXVALUE=526, RESTART=527, 
117 		LOB_COMPACTION=528, COMPRESS_ALL_ROW_GROUPS=529, REORGANIZE=530, RESUME=531, 
118 		PAUSE=532, ABORT=533, INCLUDE=534, DISTRIBUTED=535, MARK=536, WORK=537, 
119 		REMOVE=538, AUTOGROW_SINGLE_FILE=539, AUTOGROW_ALL_FILES=540, READWRITE=541, 
120 		READ_WRITE=542, MODIFY=543, ACCELERATED_DATABASE_RECOVERY=544, PERSISTENT_VERSION_STORE_FILEGROUP=545, 
121 		IMMEDIATE=546, NO_WAIT=547, TARGET_RECOVERY_TIME=548, SECONDS=549, HONOR_BROKER_PRIORITY=550, 
122 		ERROR_BROKER_CONVERSATIONS=551, NEW_BROKER=552, DISABLE_BROKER=553, ENABLE_BROKER=554, 
123 		MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=555, READ_COMMITTED_SNAPSHOT=556, 
124 		ALLOW_SNAPSHOT_ISOLATION=557, RECURSIVE_TRIGGERS=558, QUOTED_IDENTIFIER=559, 
125 		NUMERIC_ROUNDABORT=560, CONCAT_NULL_YIELDS_NULL=561, COMPATIBILITY_LEVEL=562, 
126 		ARITHABORT=563, ANSI_WARNINGS=564, ANSI_PADDING=565, ANSI_NULLS=566, ANSI_NULL_DEFAULT=567, 
127 		PAGE_VERIFY=568, CHECKSUM=569, TORN_PAGE_DETECTION=570, BULK_LOGGED=571, 
128 		RECOVERY=572, TOTAL_EXECUTION_CPU_TIME_MS=573, TOTAL_COMPILE_CPU_TIME_MS=574, 
129 		STALE_CAPTURE_POLICY_THRESHOLD=575, EXECUTION_COUNT=576, QUERY_CAPTURE_POLICY=577, 
130 		WAIT_STATS_CAPTURE_MODE=578, MAX_PLANS_PER_QUERY=579, QUERY_CAPTURE_MODE=580, 
131 		SIZE_BASED_CLEANUP_MODE=581, INTERVAL_LENGTH_MINUTES=582, MAX_STORAGE_SIZE_MB=583, 
132 		DATA_FLUSH_INTERVAL_SECONDS=584, CLEANUP_POLICY=585, CUSTOM=586, STALE_QUERY_THRESHOLD_DAYS=587, 
133 		OPERATION_MODE=588, QUERY_STORE=589, CURSOR_DEFAULT=590, GLOBAL=591, CURSOR_CLOSE_ON_COMMIT=592, 
134 		HOURS=593, CHANGE_RETENTION=594, AUTO_CLEANUP=595, CHANGE_TRACKING=596, 
135 		AUTOMATIC_TUNING=597, FORCE_LAST_GOOD_PLAN=598, AUTO_UPDATE_STATISTICS_ASYNC=599, 
136 		AUTO_UPDATE_STATISTICS=600, AUTO_SHRINK=601, AUTO_CREATE_STATISTICS=602, 
137 		INCREMENTAL=603, AUTO_CLOSE=604, DATA_RETENTION=605, TEMPORAL_HISTORY_RETENTION=606, 
138 		EDITION=607, MIXED_PAGE_ALLOCATION=608, DISABLED=609, ALLOWED=610, HADR=611, 
139 		MULTI_USER=612, RESTRICTED_USER=613, SINGLE_USER=614, OFFLINE=615, EMERGENCY=616, 
140 		SUSPEND=617, DATE_CORRELATION_OPTIMIZATION=618, ELASTIC_POOL=619, SERVICE_OBJECTIVE=620, 
141 		DATABASE_NAME=621, ALLOW_CONNECTIONS=622, GEO=623, NAMED=624, DATEFIRST=625, 
142 		BACKUP_STORAGE_REDUNDANCY=626, FORCE_FAILOVER_ALLOW_DATA_LOSS=627, SECONDARY=628, 
143 		FAILOVER=629, DEFAULT_FULLTEXT_LANGUAGE=630, DEFAULT_LANGUAGE=631, INLINE=632, 
144 		NESTED_TRIGGERS=633, TRANSFORM_NOISE_WORDS=634, TWO_DIGIT_YEAR_CUTOFF=635, 
145 		PERSISTENT_LOG_BUFFER=636, DIRECTORY_NAME=637, DATEFORMAT=638, DELAYED_DURABILITY=639, 
146 		AUTHORIZATION=640, TRANSFER=641, EXPLAIN=642, WITH_RECOMMENDATIONS=643, 
147 		BATCH_SIZE=644, SETUSER=645, NORESET=646, DEFAULT_SCHEMA=647, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS=648, 
148 		OLD_PASSWORD=649, PROVIDER=650, SID=651, UNCOMMITTED=652, COMMITTED=653, 
149 		STOPLIST=654, SEARCH=655, PROPERTY=656, LIST=657, SEND=658, MEMBER=659, 
150 		HASHED=660, MUST_CHANGE=661, DEFAULT_DATABASE=662, CHECK_EXPIRATION=663, 
151 		CHECK_POLICY=664, WINDOWS=665, UNLOCK=666, REVERT=667, COOKIE=668, BROWSE=669, 
152 		RAW=670, XMLDATA=671, XMLSCHEMA=672, ELEMENTS=673, XSINIL=674, ABSENT=675, 
153 		EXPLICIT=676, PATH=677, BASE64=678, ROOT=679, JSON=680, INCLUDE_NULL_VALUES=681, 
154 		WITHOUT_ARRAY_WRAPPER=682, XMLNAMESPACES=683, IDENTIFIER_=684, DELIMITED_IDENTIFIER_=685, 
155 		STRING_=686, NUMBER_=687, INT_NUM_=688, FLOAT_NUM_=689, DECIMAL_NUM_=690, 
156 		HEX_DIGIT_=691, BIT_NUM_=692, NCHAR_TEXT=693;
157 	public static final int
158 		RULE_execute = 0, RULE_setTransaction = 1, RULE_isolationLevel = 2, RULE_setImplicitTransactions = 3, 
159 		RULE_implicitTransactionsValue = 4, RULE_beginTransaction = 5, RULE_beginDistributedTransaction = 6, 
160 		RULE_commit = 7, RULE_commitWork = 8, RULE_rollback = 9, RULE_rollbackWork = 10, 
161 		RULE_savepoint = 11, RULE_parameterMarker = 12, RULE_literals = 13, RULE_stringLiterals = 14, 
162 		RULE_numberLiterals = 15, RULE_dateTimeLiterals = 16, RULE_hexadecimalLiterals = 17, 
163 		RULE_bitValueLiterals = 18, RULE_booleanLiterals = 19, RULE_nullValueLiterals = 20, 
164 		RULE_identifier = 21, RULE_regularIdentifier = 22, RULE_delimitedIdentifier = 23, 
165 		RULE_unreservedWord = 24, RULE_databaseName = 25, RULE_schemaName = 26, 
166 		RULE_functionName = 27, RULE_procedureName = 28, RULE_viewName = 29, RULE_triggerName = 30, 
167 		RULE_sequenceName = 31, RULE_tableName = 32, RULE_queueName = 33, RULE_contractName = 34, 
168 		RULE_serviceName = 35, RULE_columnName = 36, RULE_scriptVariableName = 37, 
169 		RULE_owner = 38, RULE_name = 39, RULE_columnNames = 40, RULE_columnNamesWithSort = 41, 
170 		RULE_tableNames = 42, RULE_indexName = 43, RULE_constraintName = 44, RULE_collationName = 45, 
171 		RULE_alias = 46, RULE_dataTypeLength = 47, RULE_primaryKey = 48, RULE_expr = 49, 
172 		RULE_andOperator = 50, RULE_orOperator = 51, RULE_notOperator = 52, RULE_booleanPrimary = 53, 
173 		RULE_comparisonOperator = 54, RULE_predicate = 55, RULE_bitExpr = 56, 
174 		RULE_simpleExpr = 57, RULE_functionCall = 58, RULE_aggregationFunction = 59, 
175 		RULE_aggregationFunctionName = 60, RULE_distinct = 61, RULE_specialFunction = 62, 
176 		RULE_castFunction = 63, RULE_convertFunction = 64, RULE_charFunction = 65, 
177 		RULE_regularFunction = 66, RULE_regularFunctionName = 67, RULE_caseExpression = 68, 
178 		RULE_caseWhen = 69, RULE_caseElse = 70, RULE_privateExprOfDb = 71, RULE_orderByClause = 72, 
179 		RULE_orderByItem = 73, RULE_dataType = 74, RULE_dataTypeName = 75, RULE_atTimeZoneExpr = 76, 
180 		RULE_castExpr = 77, RULE_convertExpr = 78, RULE_windowedFunction = 79, 
181 		RULE_overClause = 80, RULE_partitionByClause = 81, RULE_rowRangeClause = 82, 
182 		RULE_windowFrameExtent = 83, RULE_windowFrameBetween = 84, RULE_windowFrameBound = 85, 
183 		RULE_windowFramePreceding = 86, RULE_windowFrameFollowing = 87, RULE_columnNameWithSort = 88, 
184 		RULE_indexOption = 89, RULE_compressionOption = 90, RULE_eqTime = 91, 
185 		RULE_eqOnOffOption = 92, RULE_eqKey = 93, RULE_eqOnOff = 94, RULE_onPartitionClause = 95, 
186 		RULE_partitionExpressions = 96, RULE_partitionExpression = 97, RULE_numberRange = 98, 
187 		RULE_lowPriorityLockWait = 99, RULE_onLowPriorLockWait = 100, RULE_ignoredIdentifier = 101, 
188 		RULE_ignoredIdentifiers = 102, RULE_matchNone = 103, RULE_variableName = 104, 
189 		RULE_executeAsClause = 105, RULE_transactionName = 106, RULE_transactionVariableName = 107, 
190 		RULE_savepointName = 108, RULE_savepointVariableName = 109, RULE_entityType = 110, 
191 		RULE_ifExists = 111, RULE_call = 112, RULE_explain = 113, RULE_explainableStatement = 114, 
192 		RULE_createTable = 115, RULE_createTableClause = 116, RULE_createIndex = 117, 
193 		RULE_createDatabase = 118, RULE_createFunction = 119, RULE_createProcedure = 120, 
194 		RULE_createView = 121, RULE_createTrigger = 122, RULE_createSequence = 123, 
195 		RULE_createService = 124, RULE_createSchema = 125, RULE_alterTable = 126, 
196 		RULE_alterIndex = 127, RULE_alterDatabase = 128, RULE_alterProcedure = 129, 
197 		RULE_alterFunction = 130, RULE_alterView = 131, RULE_alterTrigger = 132, 
198 		RULE_alterSequence = 133, RULE_alterService = 134, RULE_alterSchema = 135, 
199 		RULE_dropTable = 136, RULE_dropIndex = 137, RULE_dropDatabase = 138, RULE_dropFunction = 139, 
200 		RULE_dropProcedure = 140, RULE_dropView = 141, RULE_dropTrigger = 142, 
201 		RULE_dropSequence = 143, RULE_dropService = 144, RULE_dropSchema = 145, 
202 		RULE_truncateTable = 146, RULE_fileTableClause = 147, RULE_createDefinitionClause = 148, 
203 		RULE_createTableDefinitions = 149, RULE_createTableDefinition = 150, RULE_columnDefinition = 151, 
204 		RULE_columnDefinitionOption = 152, RULE_encryptedOptions = 153, RULE_columnConstraint = 154, 
205 		RULE_computedColumnConstraint = 155, RULE_computedColumnForeignKeyConstraint = 156, 
206 		RULE_computedColumnForeignKeyOnAction = 157, RULE_primaryKeyConstraint = 158, 
207 		RULE_diskTablePrimaryKeyConstraintOption = 159, RULE_clusterOption = 160, 
208 		RULE_primaryKeyWithClause = 161, RULE_primaryKeyOnClause = 162, RULE_onSchemaColumn = 163, 
209 		RULE_onFileGroup = 164, RULE_onString = 165, RULE_memoryTablePrimaryKeyConstraintOption = 166, 
210 		RULE_withBucket = 167, RULE_columnForeignKeyConstraint = 168, RULE_foreignKeyOnAction = 169, 
211 		RULE_foreignKeyOn = 170, RULE_checkConstraint = 171, RULE_columnIndex = 172, 
212 		RULE_withIndexOption = 173, RULE_indexOnClause = 174, RULE_onDefault = 175, 
213 		RULE_fileStreamOn = 176, RULE_columnConstraints = 177, RULE_computedColumnDefinition = 178, 
214 		RULE_columnSetDefinition = 179, RULE_tableConstraint = 180, RULE_tablePrimaryConstraint = 181, 
215 		RULE_primaryKeyUnique = 182, RULE_diskTablePrimaryConstraintOption = 183, 
216 		RULE_memoryTablePrimaryConstraintOption = 184, RULE_hashWithBucket = 185, 
217 		RULE_tableForeignKeyConstraint = 186, RULE_tableIndex = 187, RULE_indexNameOption = 188, 
218 		RULE_indexOptions = 189, RULE_periodClause = 190, RULE_partitionScheme = 191, 
219 		RULE_fileGroup = 192, RULE_tableOptions = 193, RULE_tableOption = 194, 
220 		RULE_dataDelectionOption = 195, RULE_tableStretchOptions = 196, RULE_tableStretchOption = 197, 
221 		RULE_migrationState_ = 198, RULE_tableOperationOption = 199, RULE_distributionOption = 200, 
222 		RULE_dataWareHouseTableOption = 201, RULE_dataWareHousePartitionOption = 202, 
223 		RULE_createIndexSpecification = 203, RULE_alterDefinitionClause = 204, 
224 		RULE_addColumnSpecification = 205, RULE_modifyColumnSpecification = 206, 
225 		RULE_alterColumnOperation = 207, RULE_alterColumnAddOptions = 208, RULE_alterColumnAddOption = 209, 
226 		RULE_constraintForColumn = 210, RULE_generatedColumnNamesClause = 211, 
227 		RULE_generatedColumnNameClause = 212, RULE_generatedColumnName = 213, 
228 		RULE_alterDrop = 214, RULE_alterTableDropConstraint = 215, RULE_dropConstraintName = 216, 
229 		RULE_dropConstraintWithClause = 217, RULE_dropConstraintOption = 218, 
230 		RULE_onOffOption = 219, RULE_dropColumnSpecification = 220, RULE_dropIndexSpecification = 221, 
231 		RULE_alterCheckConstraint = 222, RULE_alterTableTrigger = 223, RULE_alterSwitch = 224, 
232 		RULE_alterSet = 225, RULE_setFileStreamClause = 226, RULE_setSystemVersionClause = 227, 
233 		RULE_alterSetOnClause = 228, RULE_dataConsistencyCheckClause = 229, RULE_historyRetentionPeriodClause = 230, 
234 		RULE_historyRetentionPeriod = 231, RULE_alterTableTableIndex = 232, RULE_indexWithName = 233, 
235 		RULE_indexNonClusterClause = 234, RULE_alterTableIndexOnClause = 235, 
236 		RULE_indexClusterClause = 236, RULE_alterTableOption = 237, RULE_onHistoryTableClause = 238, 
237 		RULE_createDatabaseClause = 239, RULE_fileDefinitionClause = 240, RULE_databaseOption = 241, 
238 		RULE_fileStreamOption = 242, RULE_fileSpec = 243, RULE_databaseFileSpecOption = 244, 
239 		RULE_databaseFileGroup = 245, RULE_databaseFileGroupContains = 246, RULE_databaseLogOns = 247, 
240 		RULE_declareVariable = 248, RULE_variable = 249, RULE_tableVariable = 250, 
241 		RULE_variTableTypeDefinition = 251, RULE_tableVariableClause = 252, RULE_variableTableColumnDefinition = 253, 
242 		RULE_variableTableColumnConstraint = 254, RULE_variableTableConstraint = 255, 
243 		RULE_setVariable = 256, RULE_setVariableClause = 257, RULE_cursorVariable = 258, 
244 		RULE_cursorClause = 259, RULE_compoundOperation = 260, RULE_funcParameters = 261, 
245 		RULE_funcReturns = 262, RULE_funcMutiReturn = 263, RULE_funcInlineReturn = 264, 
246 		RULE_funcScalarReturn = 265, RULE_tableTypeDefinition = 266, RULE_compoundStatement = 267, 
247 		RULE_functionOption = 268, RULE_validStatement = 269, RULE_procParameters = 270, 
248 		RULE_procParameter = 271, RULE_createOrAlterProcClause = 272, RULE_withCreateProcOption = 273, 
249 		RULE_procOption = 274, RULE_procAsClause = 275, RULE_procSetOption = 276, 
250 		RULE_createOrAlterViewClause = 277, RULE_viewAttribute = 278, RULE_withCommonTableExpr = 279, 
251 		RULE_commonTableExpr = 280, RULE_createTriggerClause = 281, RULE_dmlTriggerOption = 282, 
252 		RULE_methodSpecifier = 283, RULE_triggerTarget = 284, RULE_createOrAlterSequenceClause = 285, 
253 		RULE_createIndexClause = 286, RULE_filterPredicate = 287, RULE_conjunct = 288, 
254 		RULE_alterIndexClause = 289, RULE_relationalIndexOption = 290, RULE_partitionNumberRange = 291, 
255 		RULE_reorganizeOption = 292, RULE_setIndexOption = 293, RULE_resumableIndexOptions = 294, 
256 		RULE_alterDatabaseClause = 295, RULE_addSecondaryOption = 296, RULE_editionOptions = 297, 
257 		RULE_serviceObjective = 298, RULE_alterDatabaseOptionSpec = 299, RULE_fileAndFilegroupOptions = 300, 
258 		RULE_addOrModifyFilegroups = 301, RULE_filegroupUpdatabilityOption = 302, 
259 		RULE_addOrModifyFiles = 303, RULE_acceleratedDatabaseRecovery = 304, RULE_autoOption = 305, 
260 		RULE_automaticTuningOption = 306, RULE_changeTrackingOption = 307, RULE_changeTrackingOptionList = 308, 
261 		RULE_cursorOption = 309, RULE_externalAccessOption = 310, RULE_queryStoreOptions = 311, 
262 		RULE_queryStoreOptionList = 312, RULE_queryCapturePolicyOptionList = 313, 
263 		RULE_recoveryOption = 314, RULE_sqlOption = 315, RULE_snapshotOption = 316, 
264 		RULE_serviceBrokerOption = 317, RULE_targetRecoveryTimeOption = 318, RULE_termination = 319, 
265 		RULE_createServiceClause = 320, RULE_alterServiceClause = 321, RULE_alterServiceOptArg = 322, 
266 		RULE_schemaNameClause = 323, RULE_schemaElement = 324, RULE_createTableAsSelectClause = 325, 
267 		RULE_createTableAsSelect = 326, RULE_createRemoteTableAsSelect = 327, 
268 		RULE_withDistributionOption = 328, RULE_optionQueryHintClause = 329, RULE_insert = 330, 
269 		RULE_insertDefaultValue = 331, RULE_insertValuesClause = 332, RULE_insertSelectClause = 333, 
270 		RULE_update = 334, RULE_assignment = 335, RULE_setAssignmentsClause = 336, 
271 		RULE_assignmentValues = 337, RULE_assignmentValue = 338, RULE_delete = 339, 
272 		RULE_singleTableClause = 340, RULE_multipleTablesClause = 341, RULE_multipleTableNames = 342, 
273 		RULE_select = 343, RULE_aggregationClause = 344, RULE_selectClause = 345, 
274 		RULE_duplicateSpecification = 346, RULE_projections = 347, RULE_projection = 348, 
275 		RULE_top = 349, RULE_topNum = 350, RULE_unqualifiedShorthand = 351, RULE_qualifiedShorthand = 352, 
276 		RULE_fromClause = 353, RULE_tableReferences = 354, RULE_tableReference = 355, 
277 		RULE_tableFactor = 356, RULE_joinedTable = 357, RULE_joinSpecification = 358, 
278 		RULE_whereClause = 359, RULE_groupByClause = 360, RULE_havingClause = 361, 
279 		RULE_subquery = 362, RULE_withClause = 363, RULE_cteClauseSet = 364, RULE_cteClause = 365, 
280 		RULE_outputClause = 366, RULE_outputWithColumns = 367, RULE_outputWithColumn = 368, 
281 		RULE_outputWithAaterisk = 369, RULE_outputTableName = 370, RULE_queryHint = 371, 
282 		RULE_useHitName = 372, RULE_forClause = 373, RULE_forXmlClause = 374, 
283 		RULE_commonDirectivesForXml = 375, RULE_forJsonClause = 376, RULE_selectWithClause = 377, 
284 		RULE_xmlNamespacesClause = 378, RULE_xmlNamespaceDeclarationItem = 379, 
285 		RULE_xmlNamespaceUri = 380, RULE_xmlNamespacePrefix = 381, RULE_xmlDefaultNamespaceDeclarationItem = 382, 
286 		RULE_grant = 383, RULE_grantClassPrivilegesClause = 384, RULE_grantClassTypePrivilegesClause = 385, 
287 		RULE_classPrivileges = 386, RULE_onClassClause = 387, RULE_classTypePrivileges = 388, 
288 		RULE_onClassTypeClause = 389, RULE_securable = 390, RULE_principal = 391, 
289 		RULE_revoke = 392, RULE_revokeClassPrivilegesClause = 393, RULE_revokeClassTypePrivilegesClause = 394, 
290 		RULE_deny = 395, RULE_denyClassPrivilegesClause = 396, RULE_denyClassTypePrivilegesClause = 397, 
291 		RULE_optionForClause = 398, RULE_privilegeType = 399, RULE_objectPermission = 400, 
292 		RULE_serverPermission = 401, RULE_serverPrincipalPermission = 402, RULE_databasePermission = 403, 
293 		RULE_databasePrincipalPermission = 404, RULE_databaseUserPermission = 405, 
294 		RULE_databaseRolePermission = 406, RULE_applicationRolePermission = 407, 
295 		RULE_databaseScopedCredentialPermission = 408, RULE_schemaPermission = 409, 
296 		RULE_searchPropertyListPermission = 410, RULE_serviceBrokerPermission = 411, 
297 		RULE_serviceBrokerContractsPermission = 412, RULE_serviceBrokerMessageTypesPermission = 413, 
298 		RULE_serviceBrokerRemoteServiceBindingsPermission = 414, RULE_serviceBrokerRoutesPermission = 415, 
299 		RULE_serviceBrokerServicesPermission = 416, RULE_endpointPermission = 417, 
300 		RULE_certificatePermission = 418, RULE_symmetricKeyPermission = 419, RULE_asymmetricKeyPermission = 420, 
301 		RULE_assemblyPermission = 421, RULE_availabilityGroupPermission = 422, 
302 		RULE_fullTextPermission = 423, RULE_fullTextCatalogPermission = 424, RULE_fullTextStoplistPermission = 425, 
303 		RULE_typePermission = 426, RULE_xmlSchemaCollectionPermission = 427, RULE_systemObjectPermission = 428, 
304 		RULE_class_ = 429, RULE_classItem = 430, RULE_classType = 431, RULE_roleClause = 432, 
305 		RULE_setUser = 433, RULE_createUser = 434, RULE_createUserLoginClause = 435, 
306 		RULE_createUserWindowsPrincipalClause = 436, RULE_createUserLoginWindowsPrincipalClause = 437, 
307 		RULE_createUserWithoutLoginClause = 438, RULE_optionsList = 439, RULE_limitedOptionsList = 440, 
308 		RULE_createUserFromExternalProviderClause = 441, RULE_createUserWithDefaultSchema = 442, 
309 		RULE_createUserWithAzureActiveDirectoryPrincipalClause = 443, RULE_windowsPrincipal = 444, 
310 		RULE_azureActiveDirectoryPrincipal = 445, RULE_userName = 446, RULE_ignoredNameIdentifier = 447, 
311 		RULE_dropUser = 448, RULE_alterUser = 449, RULE_setItem = 450, RULE_createRole = 451, 
312 		RULE_dropRole = 452, RULE_alterRole = 453, RULE_createLogin = 454, RULE_createLoginForSQLServerClause = 455, 
313 		RULE_createLoginForSQLServerOptionList = 456, RULE_createLoginForSQLServerOptionListClause = 457, 
314 		RULE_hashedPassword = 458, RULE_sid = 459, RULE_sources = 460, RULE_windowsOptions = 461, 
315 		RULE_createLoginForAzureSQLDatabaseClause = 462, RULE_createLoginForAzureSQLDatabaseOptionList = 463, 
316 		RULE_createLoginForAzureManagedInstanceClause = 464, RULE_azureManagedInstanceOptionList = 465, 
317 		RULE_createLoginForAzureSynapseAnalyticsClause = 466, RULE_createLoginForAzureSynapseAnalyticsOptionList = 467, 
318 		RULE_createLoginForAnalyticsPlatformSystemClause = 468, RULE_createLoginForAnalyticsPlatformSystemOptionList = 469, 
319 		RULE_createLoginForAnalyticsPlatformSystemOptionListClause = 470, RULE_dropLogin = 471, 
320 		RULE_alterLogin = 472, RULE_statusOptionClause = 473, RULE_setOptionClause = 474, 
321 		RULE_passwordOptionClause = 475, RULE_cryptographicCredentialsOptionClause = 476, 
322 		RULE_revert = 477;
323 	private static String[] makeRuleNames() {
324 		return new String[] {
325 			"execute", "setTransaction", "isolationLevel", "setImplicitTransactions", 
326 			"implicitTransactionsValue", "beginTransaction", "beginDistributedTransaction", 
327 			"commit", "commitWork", "rollback", "rollbackWork", "savepoint", "parameterMarker", 
328 			"literals", "stringLiterals", "numberLiterals", "dateTimeLiterals", "hexadecimalLiterals", 
329 			"bitValueLiterals", "booleanLiterals", "nullValueLiterals", "identifier", 
330 			"regularIdentifier", "delimitedIdentifier", "unreservedWord", "databaseName", 
331 			"schemaName", "functionName", "procedureName", "viewName", "triggerName", 
332 			"sequenceName", "tableName", "queueName", "contractName", "serviceName", 
333 			"columnName", "scriptVariableName", "owner", "name", "columnNames", "columnNamesWithSort", 
334 			"tableNames", "indexName", "constraintName", "collationName", "alias", 
335 			"dataTypeLength", "primaryKey", "expr", "andOperator", "orOperator", 
336 			"notOperator", "booleanPrimary", "comparisonOperator", "predicate", "bitExpr", 
337 			"simpleExpr", "functionCall", "aggregationFunction", "aggregationFunctionName", 
338 			"distinct", "specialFunction", "castFunction", "convertFunction", "charFunction", 
339 			"regularFunction", "regularFunctionName", "caseExpression", "caseWhen", 
340 			"caseElse", "privateExprOfDb", "orderByClause", "orderByItem", "dataType", 
341 			"dataTypeName", "atTimeZoneExpr", "castExpr", "convertExpr", "windowedFunction", 
342 			"overClause", "partitionByClause", "rowRangeClause", "windowFrameExtent", 
343 			"windowFrameBetween", "windowFrameBound", "windowFramePreceding", "windowFrameFollowing", 
344 			"columnNameWithSort", "indexOption", "compressionOption", "eqTime", "eqOnOffOption", 
345 			"eqKey", "eqOnOff", "onPartitionClause", "partitionExpressions", "partitionExpression", 
346 			"numberRange", "lowPriorityLockWait", "onLowPriorLockWait", "ignoredIdentifier", 
347 			"ignoredIdentifiers", "matchNone", "variableName", "executeAsClause", 
348 			"transactionName", "transactionVariableName", "savepointName", "savepointVariableName", 
349 			"entityType", "ifExists", "call", "explain", "explainableStatement", 
350 			"createTable", "createTableClause", "createIndex", "createDatabase", 
351 			"createFunction", "createProcedure", "createView", "createTrigger", "createSequence", 
352 			"createService", "createSchema", "alterTable", "alterIndex", "alterDatabase", 
353 			"alterProcedure", "alterFunction", "alterView", "alterTrigger", "alterSequence", 
354 			"alterService", "alterSchema", "dropTable", "dropIndex", "dropDatabase", 
355 			"dropFunction", "dropProcedure", "dropView", "dropTrigger", "dropSequence", 
356 			"dropService", "dropSchema", "truncateTable", "fileTableClause", "createDefinitionClause", 
357 			"createTableDefinitions", "createTableDefinition", "columnDefinition", 
358 			"columnDefinitionOption", "encryptedOptions", "columnConstraint", "computedColumnConstraint", 
359 			"computedColumnForeignKeyConstraint", "computedColumnForeignKeyOnAction", 
360 			"primaryKeyConstraint", "diskTablePrimaryKeyConstraintOption", "clusterOption", 
361 			"primaryKeyWithClause", "primaryKeyOnClause", "onSchemaColumn", "onFileGroup", 
362 			"onString", "memoryTablePrimaryKeyConstraintOption", "withBucket", "columnForeignKeyConstraint", 
363 			"foreignKeyOnAction", "foreignKeyOn", "checkConstraint", "columnIndex", 
364 			"withIndexOption", "indexOnClause", "onDefault", "fileStreamOn", "columnConstraints", 
365 			"computedColumnDefinition", "columnSetDefinition", "tableConstraint", 
366 			"tablePrimaryConstraint", "primaryKeyUnique", "diskTablePrimaryConstraintOption", 
367 			"memoryTablePrimaryConstraintOption", "hashWithBucket", "tableForeignKeyConstraint", 
368 			"tableIndex", "indexNameOption", "indexOptions", "periodClause", "partitionScheme", 
369 			"fileGroup", "tableOptions", "tableOption", "dataDelectionOption", "tableStretchOptions", 
370 			"tableStretchOption", "migrationState_", "tableOperationOption", "distributionOption", 
371 			"dataWareHouseTableOption", "dataWareHousePartitionOption", "createIndexSpecification", 
372 			"alterDefinitionClause", "addColumnSpecification", "modifyColumnSpecification", 
373 			"alterColumnOperation", "alterColumnAddOptions", "alterColumnAddOption", 
374 			"constraintForColumn", "generatedColumnNamesClause", "generatedColumnNameClause", 
375 			"generatedColumnName", "alterDrop", "alterTableDropConstraint", "dropConstraintName", 
376 			"dropConstraintWithClause", "dropConstraintOption", "onOffOption", "dropColumnSpecification", 
377 			"dropIndexSpecification", "alterCheckConstraint", "alterTableTrigger", 
378 			"alterSwitch", "alterSet", "setFileStreamClause", "setSystemVersionClause", 
379 			"alterSetOnClause", "dataConsistencyCheckClause", "historyRetentionPeriodClause", 
380 			"historyRetentionPeriod", "alterTableTableIndex", "indexWithName", "indexNonClusterClause", 
381 			"alterTableIndexOnClause", "indexClusterClause", "alterTableOption", 
382 			"onHistoryTableClause", "createDatabaseClause", "fileDefinitionClause", 
383 			"databaseOption", "fileStreamOption", "fileSpec", "databaseFileSpecOption", 
384 			"databaseFileGroup", "databaseFileGroupContains", "databaseLogOns", "declareVariable", 
385 			"variable", "tableVariable", "variTableTypeDefinition", "tableVariableClause", 
386 			"variableTableColumnDefinition", "variableTableColumnConstraint", "variableTableConstraint", 
387 			"setVariable", "setVariableClause", "cursorVariable", "cursorClause", 
388 			"compoundOperation", "funcParameters", "funcReturns", "funcMutiReturn", 
389 			"funcInlineReturn", "funcScalarReturn", "tableTypeDefinition", "compoundStatement", 
390 			"functionOption", "validStatement", "procParameters", "procParameter", 
391 			"createOrAlterProcClause", "withCreateProcOption", "procOption", "procAsClause", 
392 			"procSetOption", "createOrAlterViewClause", "viewAttribute", "withCommonTableExpr", 
393 			"commonTableExpr", "createTriggerClause", "dmlTriggerOption", "methodSpecifier", 
394 			"triggerTarget", "createOrAlterSequenceClause", "createIndexClause", 
395 			"filterPredicate", "conjunct", "alterIndexClause", "relationalIndexOption", 
396 			"partitionNumberRange", "reorganizeOption", "setIndexOption", "resumableIndexOptions", 
397 			"alterDatabaseClause", "addSecondaryOption", "editionOptions", "serviceObjective", 
398 			"alterDatabaseOptionSpec", "fileAndFilegroupOptions", "addOrModifyFilegroups", 
399 			"filegroupUpdatabilityOption", "addOrModifyFiles", "acceleratedDatabaseRecovery", 
400 			"autoOption", "automaticTuningOption", "changeTrackingOption", "changeTrackingOptionList", 
401 			"cursorOption", "externalAccessOption", "queryStoreOptions", "queryStoreOptionList", 
402 			"queryCapturePolicyOptionList", "recoveryOption", "sqlOption", "snapshotOption", 
403 			"serviceBrokerOption", "targetRecoveryTimeOption", "termination", "createServiceClause", 
404 			"alterServiceClause", "alterServiceOptArg", "schemaNameClause", "schemaElement", 
405 			"createTableAsSelectClause", "createTableAsSelect", "createRemoteTableAsSelect", 
406 			"withDistributionOption", "optionQueryHintClause", "insert", "insertDefaultValue", 
407 			"insertValuesClause", "insertSelectClause", "update", "assignment", "setAssignmentsClause", 
408 			"assignmentValues", "assignmentValue", "delete", "singleTableClause", 
409 			"multipleTablesClause", "multipleTableNames", "select", "aggregationClause", 
410 			"selectClause", "duplicateSpecification", "projections", "projection", 
411 			"top", "topNum", "unqualifiedShorthand", "qualifiedShorthand", "fromClause", 
412 			"tableReferences", "tableReference", "tableFactor", "joinedTable", "joinSpecification", 
413 			"whereClause", "groupByClause", "havingClause", "subquery", "withClause", 
414 			"cteClauseSet", "cteClause", "outputClause", "outputWithColumns", "outputWithColumn", 
415 			"outputWithAaterisk", "outputTableName", "queryHint", "useHitName", "forClause", 
416 			"forXmlClause", "commonDirectivesForXml", "forJsonClause", "selectWithClause", 
417 			"xmlNamespacesClause", "xmlNamespaceDeclarationItem", "xmlNamespaceUri", 
418 			"xmlNamespacePrefix", "xmlDefaultNamespaceDeclarationItem", "grant", 
419 			"grantClassPrivilegesClause", "grantClassTypePrivilegesClause", "classPrivileges", 
420 			"onClassClause", "classTypePrivileges", "onClassTypeClause", "securable", 
421 			"principal", "revoke", "revokeClassPrivilegesClause", "revokeClassTypePrivilegesClause", 
422 			"deny", "denyClassPrivilegesClause", "denyClassTypePrivilegesClause", 
423 			"optionForClause", "privilegeType", "objectPermission", "serverPermission", 
424 			"serverPrincipalPermission", "databasePermission", "databasePrincipalPermission", 
425 			"databaseUserPermission", "databaseRolePermission", "applicationRolePermission", 
426 			"databaseScopedCredentialPermission", "schemaPermission", "searchPropertyListPermission", 
427 			"serviceBrokerPermission", "serviceBrokerContractsPermission", "serviceBrokerMessageTypesPermission", 
428 			"serviceBrokerRemoteServiceBindingsPermission", "serviceBrokerRoutesPermission", 
429 			"serviceBrokerServicesPermission", "endpointPermission", "certificatePermission", 
430 			"symmetricKeyPermission", "asymmetricKeyPermission", "assemblyPermission", 
431 			"availabilityGroupPermission", "fullTextPermission", "fullTextCatalogPermission", 
432 			"fullTextStoplistPermission", "typePermission", "xmlSchemaCollectionPermission", 
433 			"systemObjectPermission", "class_", "classItem", "classType", "roleClause", 
434 			"setUser", "createUser", "createUserLoginClause", "createUserWindowsPrincipalClause", 
435 			"createUserLoginWindowsPrincipalClause", "createUserWithoutLoginClause", 
436 			"optionsList", "limitedOptionsList", "createUserFromExternalProviderClause", 
437 			"createUserWithDefaultSchema", "createUserWithAzureActiveDirectoryPrincipalClause", 
438 			"windowsPrincipal", "azureActiveDirectoryPrincipal", "userName", "ignoredNameIdentifier", 
439 			"dropUser", "alterUser", "setItem", "createRole", "dropRole", "alterRole", 
440 			"createLogin", "createLoginForSQLServerClause", "createLoginForSQLServerOptionList", 
441 			"createLoginForSQLServerOptionListClause", "hashedPassword", "sid", "sources", 
442 			"windowsOptions", "createLoginForAzureSQLDatabaseClause", "createLoginForAzureSQLDatabaseOptionList", 
443 			"createLoginForAzureManagedInstanceClause", "azureManagedInstanceOptionList", 
444 			"createLoginForAzureSynapseAnalyticsClause", "createLoginForAzureSynapseAnalyticsOptionList", 
445 			"createLoginForAnalyticsPlatformSystemClause", "createLoginForAnalyticsPlatformSystemOptionList", 
446 			"createLoginForAnalyticsPlatformSystemOptionListClause", "dropLogin", 
447 			"alterLogin", "statusOptionClause", "setOptionClause", "passwordOptionClause", 
448 			"cryptographicCredentialsOptionClause", "revert"
449 		};
450 	}
451 	public static final String[] ruleNames = makeRuleNames();
452 
453 	private static String[] makeLiteralNames() {
454 		return new String[] {
455 			null, "'Default does not match anything'", null, null, "'&&'", "'||'", 
456 			"'!'", "'~'", "'|'", "'&'", "'<<'", "'>>'", "'^'", "'%'", "':'", "'+'", 
457 			"'-'", "'*'", "'/'", "'\\'", "'.'", "'.*'", "'<=>'", "'=='", "'='", null, 
458 			"'>'", "'>='", "'<'", "'<='", "'#'", "'('", "')'", "'{'", "'}'", "'['", 
459 			"']'", "','", "'\"'", "'''", "'`'", "'?'", "'@'", "';'", "'$'", null, 
460 			null, null, null, null, null, null, null, null, null, null, null, null, 
461 			null, null, null, null, null, null, null, null, null, null, null, null, 
462 			null, null, null, null, null, null, null, null, null, null, null, null, 
463 			null, null, null, null, null, null, null, null, null, null, null, null, 
464 			null, null, null, null, null, null, null, null, null, null, null, null, 
465 			null, null, null, null, null, null, null, null, null, null, null, null, 
466 			null, null, null, null, null, null, null, null, null, null, null, null, 
467 			null, null, null, null, null, null, null, null, null, null, null, null, 
468 			null, null, null, null, null, null, null, null, null, null, null, null, 
469 			null, null, null, null, null, null, null, null, null, null, null, null, 
470 			null, null, null, null, null, null, null, null, null, null, null, null, 
471 			null, null, null, null, null, null, null, null, null, null, null, null, 
472 			null, null, null, null, null, null, null, null, null, null, null, null, 
473 			null, null, null, null, null, null, null, null, null, null, null, "'DO NOT MATCH ANY THING, JUST FOR GENERATOR'"
474 		};
475 	}
476 	private static final String[] _LITERAL_NAMES = makeLiteralNames();
477 	private static String[] makeSymbolicNames() {
478 		return new String[] {
479 			null, null, "BLOCK_COMMENT", "INLINE_COMMENT", "AND_", "OR_", "NOT_", 
480 			"TILDE_", "VERTICAL_BAR_", "AMPERSAND_", "SIGNED_LEFT_SHIFT_", "SIGNED_RIGHT_SHIFT_", 
481 			"CARET_", "MOD_", "COLON_", "PLUS_", "MINUS_", "ASTERISK_", "SLASH_", 
482 			"BACKSLASH_", "DOT_", "DOT_ASTERISK_", "SAFE_EQ_", "DEQ_", "EQ_", "NEQ_", 
483 			"GT_", "GTE_", "LT_", "LTE_", "POUND_", "LP_", "RP_", "LBE_", "RBE_", 
484 			"LBT_", "RBT_", "COMMA_", "DQ_", "SQ_", "BQ_", "QUESTION_", "AT_", "SEMI_", 
485 			"DOLLAR_", "WS", "SELECT", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", 
486 			"DROP", "TRUNCATE", "SCHEMA", "GRANT", "REVOKE", "ADD", "SET", "TABLE", 
487 			"COLUMN", "INDEX", "CONSTRAINT", "PRIMARY", "UNIQUE", "FOREIGN", "KEY", 
488 			"POSITION", "PRECISION", "FUNCTION", "TRIGGER", "PROCEDURE", "PROC", 
489 			"VIEW", "INTO", "VALUES", "WITH", "UNION", "DISTINCT", "CASE", "WHEN", 
490 			"CAST", "TRIM", "SUBSTRING", "FROM", "NATURAL", "JOIN", "FULL", "INNER", 
491 			"OUTER", "LEFT", "RIGHT", "CROSS", "USING", "WHERE", "AS", "ON", "IF", 
492 			"ELSE", "THEN", "FOR", "TO", "AND", "OR", "IS", "NOT", "NULL", "TRUE", 
493 			"FALSE", "EXISTS", "BETWEEN", "IN", "ALL", "ANY", "LIKE", "ORDER", "GROUP", 
494 			"BY", "ASC", "DESC", "HAVING", "LIMIT", "OFFSET", "BEGIN", "COMMIT", 
495 			"ROLLBACK", "SAVEPOINT", "BOOLEAN", "DOUBLE", "CHAR", "CHARACTER", "ARRAY", 
496 			"INTERVAL", "DATE", "TIME", "TIMESTAMP", "LOCALTIME", "LOCALTIMESTAMP", 
497 			"YEAR", "QUARTER", "MONTH", "WEEK", "DAY", "HOUR", "MINUTE", "SECOND", 
498 			"MICROSECOND", "MAX", "MIN", "SUM", "COUNT", "AVG", "DEFAULT", "CURRENT", 
499 			"ENABLE", "DISABLE", "CALL", "INSTANCE", "PRESERVE", "DO", "DEFINER", 
500 			"CURRENT_USER", "SQL", "CASCADED", "LOCAL", "CLOSE", "OPEN", "NEXT", 
501 			"NAME", "COLLATION", "NAMES", "INTEGER", "REAL", "DECIMAL", "TYPE", "BIT", 
502 			"SMALLINT", "INT", "TINYINT", "NUMERIC", "FLOAT", "BIGINT", "TEXT", "VARCHAR", 
503 			"PERCENT", "TIES", "EXCEPT", "INTERSECT", "USE", "MERGE", "LOOP", "EXPAND", 
504 			"VIEWS", "FAST", "FORCE", "KEEP", "PLAN", "OPTIMIZE", "SIMPLE", "FORCED", 
505 			"HINT", "READ_ONLY", "DATABASE", "DECLARE", "CURSOR", "OF", "RETURNS", 
506 			"DATEPART", "RETURN", "READONLY", "AT", "PASSWORD", "WITHOUT", "FOR_GENERATOR", 
507 			"BINARY", "ESCAPE", "HIDDEN_", "MOD", "PARTITION", "PARTITIONS", "TOP", 
508 			"ROW", "ROWS", "UNKNOWN", "XOR", "ALWAYS", "CASCADE", "CHECK", "GENERATED", 
509 			"NO", "OPTION", "PRIVILEGES", "REFERENCES", "USER", "ROLE", "START", 
510 			"TRANSACTION", "ACTION", "ALGORITHM", "AUTO", "BLOCKERS", "CLUSTERED", 
511 			"NONCLUSTERED", "COLLATE", "COLUMNSTORE", "CONTENT", "CONVERT", "YEARS", 
512 			"MONTHS", "WEEKS", "DAYS", "MINUTES", "DENY", "DETERMINISTIC", "DISTRIBUTION", 
513 			"DOCUMENT", "DURABILITY", "ENCRYPTED", "END", "FILESTREAM", "FILETABLE", 
514 			"FILLFACTOR", "FOLLOWING", "HASH", "HEAP", "IDENTITY", "INBOUND", "OUTBOUND", 
515 			"UNBOUNDED", "INFINITE", "LOGIN", "MASKED", "MAXDOP", "MOVE", "NOCHECK", 
516 			"NONE", "OBJECT", "OFF", "ONLINE", "OVER", "PAGE", "PAUSED", "PERIOD", 
517 			"PERSISTED", "PRECEDING", "RANDOMIZED", "RANGE", "REBUILD", "REPLICATE", 
518 			"REPLICATION", "RESUMABLE", "ROWGUIDCOL", "SAVE", "SELF", "SPARSE", "SWITCH", 
519 			"TRAN", "TRANCOUNT", "ZONE", "EXECUTE", "EXEC", "SESSION", "CONNECT", 
520 			"CONNECTION", "CATALOG", "CONTROL", "CONCAT", "TAKE", "OWNERSHIP", "DEFINITION", 
521 			"APPLICATION", "ASSEMBLY", "SYMMETRIC", "ASYMMETRIC", "SERVER", "RECEIVE", 
522 			"CHANGE", "TRACE", "TRACKING", "RESOURCES", "SETTINGS", "STATE", "AVAILABILITY", 
523 			"CREDENTIAL", "ENDPOINT", "EVENT", "NOTIFICATION", "LINKED", "AUDIT", 
524 			"DDL", "XML", "IMPERSONATE", "SECURABLES", "AUTHENTICATE", "EXTERNAL", 
525 			"ACCESS", "ADMINISTER", "BULK", "OPERATIONS", "UNSAFE", "SHUTDOWN", "SCOPED", 
526 			"CONFIGURATION", "DATASPACE", "SERVICE", "CERTIFICATE", "CONTRACT", "ENCRYPTION", 
527 			"MASTER", "DATA", "SOURCE", "FILE", "FORMAT", "LIBRARY", "FULLTEXT", 
528 			"MASK", "UNMASK", "MESSAGE", "REMOTE", "BINDING", "ROUTE", "SECURITY", 
529 			"POLICY", "AGGREGATE", "QUEUE", "RULE", "SYNONYM", "COLLECTION", "SCRIPT", 
530 			"KILL", "BACKUP", "LOG", "SHOWPLAN", "SUBSCRIBE", "QUERY", "NOTIFICATIONS", 
531 			"CHECKPOINT", "SEQUENCE", "ABORT_AFTER_WAIT", "ALLOW_PAGE_LOCKS", "ALLOW_ROW_LOCKS", 
532 			"ALL_SPARSE_COLUMNS", "BUCKET_COUNT", "COLUMNSTORE_ARCHIVE", "COLUMN_ENCRYPTION_KEY", 
533 			"COLUMN_SET", "COMPRESSION_DELAY", "DATABASE_DEAULT", "DATA_COMPRESSION", 
534 			"DATA_CONSISTENCY_CHECK", "ENCRYPTION_TYPE", "SYSTEM_TIME", "SYSTEM_VERSIONING", 
535 			"TEXTIMAGE_ON", "WAIT_AT_LOW_PRIORITY", "STATISTICS_INCREMENTAL", "STATISTICS_NORECOMPUTE", 
536 			"ROUND_ROBIN", "SCHEMA_AND_DATA", "SCHEMA_ONLY", "SORT_IN_TEMPDB", "IGNORE_DUP_KEY", 
537 			"IMPLICIT_TRANSACTIONS", "MAX_DURATION", "MEMORY_OPTIMIZED", "MIGRATION_STATE", 
538 			"PAD_INDEX", "REMOTE_DATA_ARCHIVE", "FILESTREAM_ON", "FILETABLE_COLLATE_FILENAME", 
539 			"FILETABLE_DIRECTORY", "FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME", "FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME", 
540 			"FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME", "FILTER_PREDICATE", "HISTORY_RETENTION_PERIOD", 
541 			"HISTORY_TABLE", "LOCK_ESCALATION", "DROP_EXISTING", "ROW_NUMBER", "FETCH", 
542 			"FIRST", "ONLY", "MONEY", "SMALLMONEY", "DATETIMEOFFSET", "DATETIME", 
543 			"DATETIME2", "SMALLDATETIME", "NCHAR", "NVARCHAR", "NTEXT", "VARBINARY", 
544 			"IMAGE", "SQL_VARIANT", "UNIQUEIDENTIFIER", "HIERARCHYID", "GEOMETRY", 
545 			"GEOGRAPHY", "OUTPUT", "INSERTED", "DELETED", "ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS", 
546 			"ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES", "DISABLE_BATCH_MODE_ADAPTIVE_JOINS", 
547 			"DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK", "DISABLE_DEFERRED_COMPILATION_TV", 
548 			"DISABLE_INTERLEAVED_EXECUTION_TVF", "DISABLE_OPTIMIZED_NESTED_LOOP", 
549 			"DISABLE_OPTIMIZER_ROWGOAL", "DISABLE_PARAMETER_SNIFFING", "DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK", 
550 			"DISABLE_TSQL_SCALAR_UDF_INLINING", "DISALLOW_BATCH_MODE", "ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS", 
551 			"ENABLE_QUERY_OPTIMIZER_HOTFIXES", "FORCE_DEFAULT_CARDINALITY_ESTIMATION", 
552 			"FORCE_LEGACY_CARDINALITY_ESTIMATION", "QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n", 
553 			"QUERY_PLAN_PROFILE", "EXTERNALPUSHDOWN", "SCALEOUTEXECUTION", "IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX", 
554 			"KEEPFIXED", "MAX_GRANT_PERCENT", "MIN_GRANT_PERCENT", "MAXRECURSION", 
555 			"NO_PERFORMANCE_SPOOL", "PARAMETERIZATION", "QUERYTRACEON", "RECOMPILE", 
556 			"ROBUST", "OPTIMIZE_FOR_SEQUENTIAL_KEY", "DATA_DELETION", "FILTER_COLUMN", 
557 			"RETENTION_PERIOD", "CONTAINMENT", "PARTIAL", "FILENAME", "SIZE", "MAXSIZE", 
558 			"FILEGROWTH", "UNLIMITED", "KB", "MB", "GB", "TB", "CONTAINS", "MEMORY_OPTIMIZED_DATA", 
559 			"FILEGROUP", "NON_TRANSACTED_ACCESS", "DB_CHAINING", "TRUSTWORTHY", "FORWARD_ONLY", 
560 			"SCROLL", "STATIC", "KEYSET", "DYNAMIC", "FAST_FORWARD", "SCROLL_LOCKS", 
561 			"OPTIMISTIC", "TYPE_WARNING", "SCHEMABINDING", "CALLER", "INPUT", "CALLED", 
562 			"VARYING", "OUT", "OWNER", "ATOMIC", "LANGUAGE", "LEVEL", "ISOLATION", 
563 			"SNAPSHOT", "REPEATABLE", "READ", "SERIALIZABLE", "NATIVE_COMPILATION", 
564 			"VIEW_METADATA", "AFTER", "INSTEAD", "APPEND", "INCREMENT", "CYCLE", 
565 			"CACHE", "MINVALUE", "MAXVALUE", "RESTART", "LOB_COMPACTION", "COMPRESS_ALL_ROW_GROUPS", 
566 			"REORGANIZE", "RESUME", "PAUSE", "ABORT", "INCLUDE", "DISTRIBUTED", "MARK", 
567 			"WORK", "REMOVE", "AUTOGROW_SINGLE_FILE", "AUTOGROW_ALL_FILES", "READWRITE", 
568 			"READ_WRITE", "MODIFY", "ACCELERATED_DATABASE_RECOVERY", "PERSISTENT_VERSION_STORE_FILEGROUP", 
569 			"IMMEDIATE", "NO_WAIT", "TARGET_RECOVERY_TIME", "SECONDS", "HONOR_BROKER_PRIORITY", 
570 			"ERROR_BROKER_CONVERSATIONS", "NEW_BROKER", "DISABLE_BROKER", "ENABLE_BROKER", 
571 			"MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT", "READ_COMMITTED_SNAPSHOT", "ALLOW_SNAPSHOT_ISOLATION", 
572 			"RECURSIVE_TRIGGERS", "QUOTED_IDENTIFIER", "NUMERIC_ROUNDABORT", "CONCAT_NULL_YIELDS_NULL", 
573 			"COMPATIBILITY_LEVEL", "ARITHABORT", "ANSI_WARNINGS", "ANSI_PADDING", 
574 			"ANSI_NULLS", "ANSI_NULL_DEFAULT", "PAGE_VERIFY", "CHECKSUM", "TORN_PAGE_DETECTION", 
575 			"BULK_LOGGED", "RECOVERY", "TOTAL_EXECUTION_CPU_TIME_MS", "TOTAL_COMPILE_CPU_TIME_MS", 
576 			"STALE_CAPTURE_POLICY_THRESHOLD", "EXECUTION_COUNT", "QUERY_CAPTURE_POLICY", 
577 			"WAIT_STATS_CAPTURE_MODE", "MAX_PLANS_PER_QUERY", "QUERY_CAPTURE_MODE", 
578 			"SIZE_BASED_CLEANUP_MODE", "INTERVAL_LENGTH_MINUTES", "MAX_STORAGE_SIZE_MB", 
579 			"DATA_FLUSH_INTERVAL_SECONDS", "CLEANUP_POLICY", "CUSTOM", "STALE_QUERY_THRESHOLD_DAYS", 
580 			"OPERATION_MODE", "QUERY_STORE", "CURSOR_DEFAULT", "GLOBAL", "CURSOR_CLOSE_ON_COMMIT", 
581 			"HOURS", "CHANGE_RETENTION", "AUTO_CLEANUP", "CHANGE_TRACKING", "AUTOMATIC_TUNING", 
582 			"FORCE_LAST_GOOD_PLAN", "AUTO_UPDATE_STATISTICS_ASYNC", "AUTO_UPDATE_STATISTICS", 
583 			"AUTO_SHRINK", "AUTO_CREATE_STATISTICS", "INCREMENTAL", "AUTO_CLOSE", 
584 			"DATA_RETENTION", "TEMPORAL_HISTORY_RETENTION", "EDITION", "MIXED_PAGE_ALLOCATION", 
585 			"DISABLED", "ALLOWED", "HADR", "MULTI_USER", "RESTRICTED_USER", "SINGLE_USER", 
586 			"OFFLINE", "EMERGENCY", "SUSPEND", "DATE_CORRELATION_OPTIMIZATION", "ELASTIC_POOL", 
587 			"SERVICE_OBJECTIVE", "DATABASE_NAME", "ALLOW_CONNECTIONS", "GEO", "NAMED", 
588 			"DATEFIRST", "BACKUP_STORAGE_REDUNDANCY", "FORCE_FAILOVER_ALLOW_DATA_LOSS", 
589 			"SECONDARY", "FAILOVER", "DEFAULT_FULLTEXT_LANGUAGE", "DEFAULT_LANGUAGE", 
590 			"INLINE", "NESTED_TRIGGERS", "TRANSFORM_NOISE_WORDS", "TWO_DIGIT_YEAR_CUTOFF", 
591 			"PERSISTENT_LOG_BUFFER", "DIRECTORY_NAME", "DATEFORMAT", "DELAYED_DURABILITY", 
592 			"AUTHORIZATION", "TRANSFER", "EXPLAIN", "WITH_RECOMMENDATIONS", "BATCH_SIZE", 
593 			"SETUSER", "NORESET", "DEFAULT_SCHEMA", "ALLOW_ENCRYPTED_VALUE_MODIFICATIONS", 
594 			"OLD_PASSWORD", "PROVIDER", "SID", "UNCOMMITTED", "COMMITTED", "STOPLIST", 
595 			"SEARCH", "PROPERTY", "LIST", "SEND", "MEMBER", "HASHED", "MUST_CHANGE", 
596 			"DEFAULT_DATABASE", "CHECK_EXPIRATION", "CHECK_POLICY", "WINDOWS", "UNLOCK", 
597 			"REVERT", "COOKIE", "BROWSE", "RAW", "XMLDATA", "XMLSCHEMA", "ELEMENTS", 
598 			"XSINIL", "ABSENT", "EXPLICIT", "PATH", "BASE64", "ROOT", "JSON", "INCLUDE_NULL_VALUES", 
599 			"WITHOUT_ARRAY_WRAPPER", "XMLNAMESPACES", "IDENTIFIER_", "DELIMITED_IDENTIFIER_", 
600 			"STRING_", "NUMBER_", "INT_NUM_", "FLOAT_NUM_", "DECIMAL_NUM_", "HEX_DIGIT_", 
601 			"BIT_NUM_", "NCHAR_TEXT"
602 		};
603 	}
604 	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
605 	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
606 
607 	/**
608 	 * @deprecated Use {@link #VOCABULARY} instead.
609 	 */
610 	@Deprecated
611 	public static final String[] tokenNames;
612 	static {
613 		tokenNames = new String[_SYMBOLIC_NAMES.length];
614 		for (int i = 0; i < tokenNames.length; i++) {
615 			tokenNames[i] = VOCABULARY.getLiteralName(i);
616 			if (tokenNames[i] == null) {
617 				tokenNames[i] = VOCABULARY.getSymbolicName(i);
618 			}
619 
620 			if (tokenNames[i] == null) {
621 				tokenNames[i] = "<INVALID>";
622 			}
623 		}
624 	}
625 
626 	@Override
627 	@Deprecated
628 	public String[] getTokenNames() {
629 		return tokenNames;
630 	}
631 
632 	@Override
633 
634 	public Vocabulary getVocabulary() {
635 		return VOCABULARY;
636 	}
637 
638 	@Override
639 	public String getGrammarFileName() { return "SQLServerStatement.g4"; }
640 
641 	@Override
642 	public String[] getRuleNames() { return ruleNames; }
643 
644 	@Override
645 	public String getSerializedATN() { return _serializedATN; }
646 
647 	@Override
648 	public ATN getATN() { return _ATN; }
649 
650 	public SQLServerStatementParser(TokenStream input) {
651 		super(input);
652 		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
653 	}
654 
655 	public static class ExecuteContext extends ParserRuleContext {
656 		public SelectContext select() {
657 			return getRuleContext(SelectContext.class,0);
658 		}
659 		public InsertContext insert() {
660 			return getRuleContext(InsertContext.class,0);
661 		}
662 		public UpdateContext update() {
663 			return getRuleContext(UpdateContext.class,0);
664 		}
665 		public DeleteContext delete() {
666 			return getRuleContext(DeleteContext.class,0);
667 		}
668 		public CreateIndexContext createIndex() {
669 			return getRuleContext(CreateIndexContext.class,0);
670 		}
671 		public AlterIndexContext alterIndex() {
672 			return getRuleContext(AlterIndexContext.class,0);
673 		}
674 		public DropIndexContext dropIndex() {
675 			return getRuleContext(DropIndexContext.class,0);
676 		}
677 		public CreateTableContext createTable() {
678 			return getRuleContext(CreateTableContext.class,0);
679 		}
680 		public CreateDatabaseContext createDatabase() {
681 			return getRuleContext(CreateDatabaseContext.class,0);
682 		}
683 		public CreateProcedureContext createProcedure() {
684 			return getRuleContext(CreateProcedureContext.class,0);
685 		}
686 		public CreateViewContext createView() {
687 			return getRuleContext(CreateViewContext.class,0);
688 		}
689 		public CreateTriggerContext createTrigger() {
690 			return getRuleContext(CreateTriggerContext.class,0);
691 		}
692 		public CreateSequenceContext createSequence() {
693 			return getRuleContext(CreateSequenceContext.class,0);
694 		}
695 		public CreateServiceContext createService() {
696 			return getRuleContext(CreateServiceContext.class,0);
697 		}
698 		public CreateSchemaContext createSchema() {
699 			return getRuleContext(CreateSchemaContext.class,0);
700 		}
701 		public AlterTableContext alterTable() {
702 			return getRuleContext(AlterTableContext.class,0);
703 		}
704 		public AlterTriggerContext alterTrigger() {
705 			return getRuleContext(AlterTriggerContext.class,0);
706 		}
707 		public AlterSequenceContext alterSequence() {
708 			return getRuleContext(AlterSequenceContext.class,0);
709 		}
710 		public AlterDatabaseContext alterDatabase() {
711 			return getRuleContext(AlterDatabaseContext.class,0);
712 		}
713 		public AlterServiceContext alterService() {
714 			return getRuleContext(AlterServiceContext.class,0);
715 		}
716 		public AlterSchemaContext alterSchema() {
717 			return getRuleContext(AlterSchemaContext.class,0);
718 		}
719 		public AlterViewContext alterView() {
720 			return getRuleContext(AlterViewContext.class,0);
721 		}
722 		public DropTableContext dropTable() {
723 			return getRuleContext(DropTableContext.class,0);
724 		}
725 		public DropDatabaseContext dropDatabase() {
726 			return getRuleContext(DropDatabaseContext.class,0);
727 		}
728 		public DropFunctionContext dropFunction() {
729 			return getRuleContext(DropFunctionContext.class,0);
730 		}
731 		public DropProcedureContext dropProcedure() {
732 			return getRuleContext(DropProcedureContext.class,0);
733 		}
734 		public DropViewContext dropView() {
735 			return getRuleContext(DropViewContext.class,0);
736 		}
737 		public DropTriggerContext dropTrigger() {
738 			return getRuleContext(DropTriggerContext.class,0);
739 		}
740 		public DropSequenceContext dropSequence() {
741 			return getRuleContext(DropSequenceContext.class,0);
742 		}
743 		public DropServiceContext dropService() {
744 			return getRuleContext(DropServiceContext.class,0);
745 		}
746 		public DropSchemaContext dropSchema() {
747 			return getRuleContext(DropSchemaContext.class,0);
748 		}
749 		public TruncateTableContext truncateTable() {
750 			return getRuleContext(TruncateTableContext.class,0);
751 		}
752 		public CreateFunctionContext createFunction() {
753 			return getRuleContext(CreateFunctionContext.class,0);
754 		}
755 		public SetTransactionContext setTransaction() {
756 			return getRuleContext(SetTransactionContext.class,0);
757 		}
758 		public BeginTransactionContext beginTransaction() {
759 			return getRuleContext(BeginTransactionContext.class,0);
760 		}
761 		public BeginDistributedTransactionContext beginDistributedTransaction() {
762 			return getRuleContext(BeginDistributedTransactionContext.class,0);
763 		}
764 		public SetImplicitTransactionsContext setImplicitTransactions() {
765 			return getRuleContext(SetImplicitTransactionsContext.class,0);
766 		}
767 		public CommitContext commit() {
768 			return getRuleContext(CommitContext.class,0);
769 		}
770 		public CommitWorkContext commitWork() {
771 			return getRuleContext(CommitWorkContext.class,0);
772 		}
773 		public RollbackContext rollback() {
774 			return getRuleContext(RollbackContext.class,0);
775 		}
776 		public RollbackWorkContext rollbackWork() {
777 			return getRuleContext(RollbackWorkContext.class,0);
778 		}
779 		public SavepointContext savepoint() {
780 			return getRuleContext(SavepointContext.class,0);
781 		}
782 		public GrantContext grant() {
783 			return getRuleContext(GrantContext.class,0);
784 		}
785 		public RevokeContext revoke() {
786 			return getRuleContext(RevokeContext.class,0);
787 		}
788 		public DenyContext deny() {
789 			return getRuleContext(DenyContext.class,0);
790 		}
791 		public CreateUserContext createUser() {
792 			return getRuleContext(CreateUserContext.class,0);
793 		}
794 		public DropUserContext dropUser() {
795 			return getRuleContext(DropUserContext.class,0);
796 		}
797 		public AlterUserContext alterUser() {
798 			return getRuleContext(AlterUserContext.class,0);
799 		}
800 		public CreateRoleContext createRole() {
801 			return getRuleContext(CreateRoleContext.class,0);
802 		}
803 		public DropRoleContext dropRole() {
804 			return getRuleContext(DropRoleContext.class,0);
805 		}
806 		public AlterRoleContext alterRole() {
807 			return getRuleContext(AlterRoleContext.class,0);
808 		}
809 		public CreateLoginContext createLogin() {
810 			return getRuleContext(CreateLoginContext.class,0);
811 		}
812 		public DropLoginContext dropLogin() {
813 			return getRuleContext(DropLoginContext.class,0);
814 		}
815 		public AlterLoginContext alterLogin() {
816 			return getRuleContext(AlterLoginContext.class,0);
817 		}
818 		public CallContext call() {
819 			return getRuleContext(CallContext.class,0);
820 		}
821 		public ExplainContext explain() {
822 			return getRuleContext(ExplainContext.class,0);
823 		}
824 		public SetUserContext setUser() {
825 			return getRuleContext(SetUserContext.class,0);
826 		}
827 		public RevertContext revert() {
828 			return getRuleContext(RevertContext.class,0);
829 		}
830 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
831 		public ExecuteContext(ParserRuleContext parent, int invokingState) {
832 			super(parent, invokingState);
833 		}
834 		@Override public int getRuleIndex() { return RULE_execute; }
835 		@Override
836 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
837 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExecute(this);
838 			else return visitor.visitChildren(this);
839 		}
840 	}
841 
842 	public final ExecuteContext execute() throws RecognitionException {
843 		ExecuteContext _localctx = new ExecuteContext(_ctx, getState());
844 		enterRule(_localctx, 0, RULE_execute);
845 		int _la;
846 		try {
847 			enterOuterAlt(_localctx, 1);
848 			{
849 			setState(1014);
850 			_errHandler.sync(this);
851 			switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
852 			case 1:
853 				{
854 				setState(956);
855 				select();
856 				}
857 				break;
858 			case 2:
859 				{
860 				setState(957);
861 				insert();
862 				}
863 				break;
864 			case 3:
865 				{
866 				setState(958);
867 				update();
868 				}
869 				break;
870 			case 4:
871 				{
872 				setState(959);
873 				delete();
874 				}
875 				break;
876 			case 5:
877 				{
878 				setState(960);
879 				createIndex();
880 				}
881 				break;
882 			case 6:
883 				{
884 				setState(961);
885 				alterIndex();
886 				}
887 				break;
888 			case 7:
889 				{
890 				setState(962);
891 				dropIndex();
892 				}
893 				break;
894 			case 8:
895 				{
896 				setState(963);
897 				createTable();
898 				}
899 				break;
900 			case 9:
901 				{
902 				setState(964);
903 				createDatabase();
904 				}
905 				break;
906 			case 10:
907 				{
908 				setState(965);
909 				createProcedure();
910 				}
911 				break;
912 			case 11:
913 				{
914 				setState(966);
915 				createView();
916 				}
917 				break;
918 			case 12:
919 				{
920 				setState(967);
921 				createTrigger();
922 				}
923 				break;
924 			case 13:
925 				{
926 				setState(968);
927 				createSequence();
928 				}
929 				break;
930 			case 14:
931 				{
932 				setState(969);
933 				createService();
934 				}
935 				break;
936 			case 15:
937 				{
938 				setState(970);
939 				createSchema();
940 				}
941 				break;
942 			case 16:
943 				{
944 				setState(971);
945 				alterTable();
946 				}
947 				break;
948 			case 17:
949 				{
950 				setState(972);
951 				alterTrigger();
952 				}
953 				break;
954 			case 18:
955 				{
956 				setState(973);
957 				alterSequence();
958 				}
959 				break;
960 			case 19:
961 				{
962 				setState(974);
963 				alterDatabase();
964 				}
965 				break;
966 			case 20:
967 				{
968 				setState(975);
969 				alterService();
970 				}
971 				break;
972 			case 21:
973 				{
974 				setState(976);
975 				alterSchema();
976 				}
977 				break;
978 			case 22:
979 				{
980 				setState(977);
981 				alterView();
982 				}
983 				break;
984 			case 23:
985 				{
986 				setState(978);
987 				dropTable();
988 				}
989 				break;
990 			case 24:
991 				{
992 				setState(979);
993 				dropDatabase();
994 				}
995 				break;
996 			case 25:
997 				{
998 				setState(980);
999 				dropFunction();
1000 				}
1001 				break;
1002 			case 26:
1003 				{
1004 				setState(981);
1005 				dropProcedure();
1006 				}
1007 				break;
1008 			case 27:
1009 				{
1010 				setState(982);
1011 				dropView();
1012 				}
1013 				break;
1014 			case 28:
1015 				{
1016 				setState(983);
1017 				dropTrigger();
1018 				}
1019 				break;
1020 			case 29:
1021 				{
1022 				setState(984);
1023 				dropSequence();
1024 				}
1025 				break;
1026 			case 30:
1027 				{
1028 				setState(985);
1029 				dropService();
1030 				}
1031 				break;
1032 			case 31:
1033 				{
1034 				setState(986);
1035 				dropSchema();
1036 				}
1037 				break;
1038 			case 32:
1039 				{
1040 				setState(987);
1041 				truncateTable();
1042 				}
1043 				break;
1044 			case 33:
1045 				{
1046 				setState(988);
1047 				createFunction();
1048 				}
1049 				break;
1050 			case 34:
1051 				{
1052 				setState(989);
1053 				setTransaction();
1054 				}
1055 				break;
1056 			case 35:
1057 				{
1058 				setState(990);
1059 				beginTransaction();
1060 				}
1061 				break;
1062 			case 36:
1063 				{
1064 				setState(991);
1065 				beginDistributedTransaction();
1066 				}
1067 				break;
1068 			case 37:
1069 				{
1070 				setState(992);
1071 				setImplicitTransactions();
1072 				}
1073 				break;
1074 			case 38:
1075 				{
1076 				setState(993);
1077 				commit();
1078 				}
1079 				break;
1080 			case 39:
1081 				{
1082 				setState(994);
1083 				commitWork();
1084 				}
1085 				break;
1086 			case 40:
1087 				{
1088 				setState(995);
1089 				rollback();
1090 				}
1091 				break;
1092 			case 41:
1093 				{
1094 				setState(996);
1095 				rollbackWork();
1096 				}
1097 				break;
1098 			case 42:
1099 				{
1100 				setState(997);
1101 				savepoint();
1102 				}
1103 				break;
1104 			case 43:
1105 				{
1106 				setState(998);
1107 				grant();
1108 				}
1109 				break;
1110 			case 44:
1111 				{
1112 				setState(999);
1113 				revoke();
1114 				}
1115 				break;
1116 			case 45:
1117 				{
1118 				setState(1000);
1119 				deny();
1120 				}
1121 				break;
1122 			case 46:
1123 				{
1124 				setState(1001);
1125 				createUser();
1126 				}
1127 				break;
1128 			case 47:
1129 				{
1130 				setState(1002);
1131 				dropUser();
1132 				}
1133 				break;
1134 			case 48:
1135 				{
1136 				setState(1003);
1137 				alterUser();
1138 				}
1139 				break;
1140 			case 49:
1141 				{
1142 				setState(1004);
1143 				createRole();
1144 				}
1145 				break;
1146 			case 50:
1147 				{
1148 				setState(1005);
1149 				dropRole();
1150 				}
1151 				break;
1152 			case 51:
1153 				{
1154 				setState(1006);
1155 				alterRole();
1156 				}
1157 				break;
1158 			case 52:
1159 				{
1160 				setState(1007);
1161 				createLogin();
1162 				}
1163 				break;
1164 			case 53:
1165 				{
1166 				setState(1008);
1167 				dropLogin();
1168 				}
1169 				break;
1170 			case 54:
1171 				{
1172 				setState(1009);
1173 				alterLogin();
1174 				}
1175 				break;
1176 			case 55:
1177 				{
1178 				setState(1010);
1179 				call();
1180 				}
1181 				break;
1182 			case 56:
1183 				{
1184 				setState(1011);
1185 				explain();
1186 				}
1187 				break;
1188 			case 57:
1189 				{
1190 				setState(1012);
1191 				setUser();
1192 				}
1193 				break;
1194 			case 58:
1195 				{
1196 				setState(1013);
1197 				revert();
1198 				}
1199 				break;
1200 			}
1201 			setState(1017);
1202 			_errHandler.sync(this);
1203 			_la = _input.LA(1);
1204 			if (_la==SEMI_) {
1205 				{
1206 				setState(1016);
1207 				match(SEMI_);
1208 				}
1209 			}
1210 
1211 			}
1212 		}
1213 		catch (RecognitionException re) {
1214 			_localctx.exception = re;
1215 			_errHandler.reportError(this, re);
1216 			_errHandler.recover(this, re);
1217 		}
1218 		finally {
1219 			exitRule();
1220 		}
1221 		return _localctx;
1222 	}
1223 
1224 	public static class SetTransactionContext extends ParserRuleContext {
1225 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
1226 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1227 		public TerminalNode ISOLATION() { return getToken(SQLServerStatementParser.ISOLATION, 0); }
1228 		public TerminalNode LEVEL() { return getToken(SQLServerStatementParser.LEVEL, 0); }
1229 		public IsolationLevelContext isolationLevel() {
1230 			return getRuleContext(IsolationLevelContext.class,0);
1231 		}
1232 		public SetTransactionContext(ParserRuleContext parent, int invokingState) {
1233 			super(parent, invokingState);
1234 		}
1235 		@Override public int getRuleIndex() { return RULE_setTransaction; }
1236 		@Override
1237 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1238 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetTransaction(this);
1239 			else return visitor.visitChildren(this);
1240 		}
1241 	}
1242 
1243 	public final SetTransactionContext setTransaction() throws RecognitionException {
1244 		SetTransactionContext _localctx = new SetTransactionContext(_ctx, getState());
1245 		enterRule(_localctx, 2, RULE_setTransaction);
1246 		try {
1247 			enterOuterAlt(_localctx, 1);
1248 			{
1249 			setState(1019);
1250 			match(SET);
1251 			setState(1020);
1252 			match(TRANSACTION);
1253 			setState(1021);
1254 			match(ISOLATION);
1255 			setState(1022);
1256 			match(LEVEL);
1257 			setState(1023);
1258 			isolationLevel();
1259 			}
1260 		}
1261 		catch (RecognitionException re) {
1262 			_localctx.exception = re;
1263 			_errHandler.reportError(this, re);
1264 			_errHandler.recover(this, re);
1265 		}
1266 		finally {
1267 			exitRule();
1268 		}
1269 		return _localctx;
1270 	}
1271 
1272 	public static class IsolationLevelContext extends ParserRuleContext {
1273 		public TerminalNode READ() { return getToken(SQLServerStatementParser.READ, 0); }
1274 		public TerminalNode UNCOMMITTED() { return getToken(SQLServerStatementParser.UNCOMMITTED, 0); }
1275 		public TerminalNode COMMITTED() { return getToken(SQLServerStatementParser.COMMITTED, 0); }
1276 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
1277 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
1278 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
1279 		public IsolationLevelContext(ParserRuleContext parent, int invokingState) {
1280 			super(parent, invokingState);
1281 		}
1282 		@Override public int getRuleIndex() { return RULE_isolationLevel; }
1283 		@Override
1284 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1285 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIsolationLevel(this);
1286 			else return visitor.visitChildren(this);
1287 		}
1288 	}
1289 
1290 	public final IsolationLevelContext isolationLevel() throws RecognitionException {
1291 		IsolationLevelContext _localctx = new IsolationLevelContext(_ctx, getState());
1292 		enterRule(_localctx, 4, RULE_isolationLevel);
1293 		try {
1294 			setState(1033);
1295 			_errHandler.sync(this);
1296 			switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
1297 			case 1:
1298 				enterOuterAlt(_localctx, 1);
1299 				{
1300 				setState(1025);
1301 				match(READ);
1302 				setState(1026);
1303 				match(UNCOMMITTED);
1304 				}
1305 				break;
1306 			case 2:
1307 				enterOuterAlt(_localctx, 2);
1308 				{
1309 				setState(1027);
1310 				match(READ);
1311 				setState(1028);
1312 				match(COMMITTED);
1313 				}
1314 				break;
1315 			case 3:
1316 				enterOuterAlt(_localctx, 3);
1317 				{
1318 				setState(1029);
1319 				match(REPEATABLE);
1320 				setState(1030);
1321 				match(READ);
1322 				}
1323 				break;
1324 			case 4:
1325 				enterOuterAlt(_localctx, 4);
1326 				{
1327 				setState(1031);
1328 				match(SNAPSHOT);
1329 				}
1330 				break;
1331 			case 5:
1332 				enterOuterAlt(_localctx, 5);
1333 				{
1334 				setState(1032);
1335 				match(SERIALIZABLE);
1336 				}
1337 				break;
1338 			}
1339 		}
1340 		catch (RecognitionException re) {
1341 			_localctx.exception = re;
1342 			_errHandler.reportError(this, re);
1343 			_errHandler.recover(this, re);
1344 		}
1345 		finally {
1346 			exitRule();
1347 		}
1348 		return _localctx;
1349 	}
1350 
1351 	public static class SetImplicitTransactionsContext extends ParserRuleContext {
1352 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
1353 		public TerminalNode IMPLICIT_TRANSACTIONS() { return getToken(SQLServerStatementParser.IMPLICIT_TRANSACTIONS, 0); }
1354 		public ImplicitTransactionsValueContext implicitTransactionsValue() {
1355 			return getRuleContext(ImplicitTransactionsValueContext.class,0);
1356 		}
1357 		public SetImplicitTransactionsContext(ParserRuleContext parent, int invokingState) {
1358 			super(parent, invokingState);
1359 		}
1360 		@Override public int getRuleIndex() { return RULE_setImplicitTransactions; }
1361 		@Override
1362 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1363 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetImplicitTransactions(this);
1364 			else return visitor.visitChildren(this);
1365 		}
1366 	}
1367 
1368 	public final SetImplicitTransactionsContext setImplicitTransactions() throws RecognitionException {
1369 		SetImplicitTransactionsContext _localctx = new SetImplicitTransactionsContext(_ctx, getState());
1370 		enterRule(_localctx, 6, RULE_setImplicitTransactions);
1371 		try {
1372 			enterOuterAlt(_localctx, 1);
1373 			{
1374 			setState(1035);
1375 			match(SET);
1376 			setState(1036);
1377 			match(IMPLICIT_TRANSACTIONS);
1378 			setState(1037);
1379 			implicitTransactionsValue();
1380 			}
1381 		}
1382 		catch (RecognitionException re) {
1383 			_localctx.exception = re;
1384 			_errHandler.reportError(this, re);
1385 			_errHandler.recover(this, re);
1386 		}
1387 		finally {
1388 			exitRule();
1389 		}
1390 		return _localctx;
1391 	}
1392 
1393 	public static class ImplicitTransactionsValueContext extends ParserRuleContext {
1394 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
1395 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
1396 		public ImplicitTransactionsValueContext(ParserRuleContext parent, int invokingState) {
1397 			super(parent, invokingState);
1398 		}
1399 		@Override public int getRuleIndex() { return RULE_implicitTransactionsValue; }
1400 		@Override
1401 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1402 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitImplicitTransactionsValue(this);
1403 			else return visitor.visitChildren(this);
1404 		}
1405 	}
1406 
1407 	public final ImplicitTransactionsValueContext implicitTransactionsValue() throws RecognitionException {
1408 		ImplicitTransactionsValueContext _localctx = new ImplicitTransactionsValueContext(_ctx, getState());
1409 		enterRule(_localctx, 8, RULE_implicitTransactionsValue);
1410 		int _la;
1411 		try {
1412 			enterOuterAlt(_localctx, 1);
1413 			{
1414 			setState(1039);
1415 			_la = _input.LA(1);
1416 			if ( !(_la==ON || _la==OFF) ) {
1417 			_errHandler.recoverInline(this);
1418 			}
1419 			else {
1420 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1421 				_errHandler.reportMatch(this);
1422 				consume();
1423 			}
1424 			}
1425 		}
1426 		catch (RecognitionException re) {
1427 			_localctx.exception = re;
1428 			_errHandler.reportError(this, re);
1429 			_errHandler.recover(this, re);
1430 		}
1431 		finally {
1432 			exitRule();
1433 		}
1434 		return _localctx;
1435 	}
1436 
1437 	public static class BeginTransactionContext extends ParserRuleContext {
1438 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
1439 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1440 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1441 		public TransactionNameContext transactionName() {
1442 			return getRuleContext(TransactionNameContext.class,0);
1443 		}
1444 		public TransactionVariableNameContext transactionVariableName() {
1445 			return getRuleContext(TransactionVariableNameContext.class,0);
1446 		}
1447 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
1448 		public TerminalNode MARK() { return getToken(SQLServerStatementParser.MARK, 0); }
1449 		public StringLiteralsContext stringLiterals() {
1450 			return getRuleContext(StringLiteralsContext.class,0);
1451 		}
1452 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
1453 		public BeginTransactionContext(ParserRuleContext parent, int invokingState) {
1454 			super(parent, invokingState);
1455 		}
1456 		@Override public int getRuleIndex() { return RULE_beginTransaction; }
1457 		@Override
1458 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1459 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBeginTransaction(this);
1460 			else return visitor.visitChildren(this);
1461 		}
1462 	}
1463 
1464 	public final BeginTransactionContext beginTransaction() throws RecognitionException {
1465 		BeginTransactionContext _localctx = new BeginTransactionContext(_ctx, getState());
1466 		enterRule(_localctx, 10, RULE_beginTransaction);
1467 		int _la;
1468 		try {
1469 			enterOuterAlt(_localctx, 1);
1470 			{
1471 			setState(1041);
1472 			match(BEGIN);
1473 			setState(1042);
1474 			_la = _input.LA(1);
1475 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1476 			_errHandler.recoverInline(this);
1477 			}
1478 			else {
1479 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1480 				_errHandler.reportMatch(this);
1481 				consume();
1482 			}
1483 			setState(1055);
1484 			_errHandler.sync(this);
1485 			_la = _input.LA(1);
1486 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (GROUP - 53)))) != 0) || ((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (LIMIT - 121)) | (1L << (OFFSET - 121)) | (1L << (SAVEPOINT - 121)) | (1L << (BOOLEAN - 121)) | (1L << (ARRAY - 121)) | (1L << (DATE - 121)) | (1L << (LOCALTIME - 121)) | (1L << (LOCALTIMESTAMP - 121)) | (1L << (QUARTER - 121)) | (1L << (WEEK - 121)) | (1L << (DAY - 121)) | (1L << (MICROSECOND - 121)) | (1L << (MAX - 121)) | (1L << (MIN - 121)) | (1L << (SUM - 121)) | (1L << (COUNT - 121)) | (1L << (AVG - 121)) | (1L << (ENABLE - 121)) | (1L << (DISABLE - 121)) | (1L << (INSTANCE - 121)) | (1L << (DO - 121)) | (1L << (DEFINER - 121)) | (1L << (SQL - 121)) | (1L << (CASCADED - 121)) | (1L << (LOCAL - 121)) | (1L << (NEXT - 121)) | (1L << (NAME - 121)) | (1L << (INTEGER - 121)) | (1L << (TYPE - 121)))) != 0) || ((((_la - 201)) & ~0x3f) == 0 && ((1L << (_la - 201)) & ((1L << (READ_ONLY - 201)) | (1L << (DATABASE - 201)) | (1L << (DATEPART - 201)) | (1L << (PASSWORD - 201)) | (1L << (BINARY - 201)) | (1L << (HIDDEN_ - 201)) | (1L << (MOD - 201)) | (1L << (PARTITION - 201)) | (1L << (PARTITIONS - 201)) | (1L << (TOP - 201)) | (1L << (ROW - 201)) | (1L << (ROWS - 201)) | (1L << (XOR - 201)) | (1L << (ALWAYS - 201)) | (1L << (ROLE - 201)) | (1L << (START - 201)) | (1L << (ALGORITHM - 201)) | (1L << (AUTO - 201)) | (1L << (BLOCKERS - 201)) | (1L << (CLUSTERED - 201)) | (1L << (NONCLUSTERED - 201)) | (1L << (COLUMNSTORE - 201)) | (1L << (CONTENT - 201)) | (1L << (YEARS - 201)) | (1L << (MONTHS - 201)) | (1L << (WEEKS - 201)) | (1L << (DAYS - 201)) | (1L << (MINUTES - 201)) | (1L << (DENY - 201)) | (1L << (DETERMINISTIC - 201)) | (1L << (DISTRIBUTION - 201)) | (1L << (DOCUMENT - 201)) | (1L << (DURABILITY - 201)) | (1L << (ENCRYPTED - 201)) | (1L << (FILESTREAM - 201)) | (1L << (FILETABLE - 201)) | (1L << (FILLFACTOR - 201)) | (1L << (FOLLOWING - 201)) | (1L << (HASH - 201)) | (1L << (HEAP - 201)))) != 0) || ((((_la - 266)) & ~0x3f) == 0 && ((1L << (_la - 266)) & ((1L << (INBOUND - 266)) | (1L << (OUTBOUND - 266)) | (1L << (UNBOUNDED - 266)) | (1L << (INFINITE - 266)) | (1L << (LOGIN - 266)) | (1L << (MASKED - 266)) | (1L << (MAXDOP - 266)) | (1L << (MOVE - 266)) | (1L << (NOCHECK - 266)) | (1L << (OBJECT - 266)) | (1L << (OFF - 266)) | (1L << (ONLINE - 266)) | (1L << (OVER - 266)) | (1L << (PAGE - 266)) | (1L << (PAUSED - 266)) | (1L << (PERIOD - 266)) | (1L << (PERSISTED - 266)) | (1L << (PRECEDING - 266)) | (1L << (RANDOMIZED - 266)) | (1L << (RANGE - 266)) | (1L << (REBUILD - 266)) | (1L << (REPLICATE - 266)) | (1L << (REPLICATION - 266)) | (1L << (RESUMABLE - 266)) | (1L << (ROWGUIDCOL - 266)) | (1L << (SAVE - 266)) | (1L << (SELF - 266)) | (1L << (SPARSE - 266)) | (1L << (SWITCH - 266)) | (1L << (TRAN - 266)) | (1L << (TRANCOUNT - 266)) | (1L << (CONTROL - 266)) | (1L << (CONCAT - 266)) | (1L << (TAKE - 266)) | (1L << (OWNERSHIP - 266)) | (1L << (DEFINITION - 266)) | (1L << (APPLICATION - 266)) | (1L << (ASSEMBLY - 266)) | (1L << (SYMMETRIC - 266)) | (1L << (ASYMMETRIC - 266)) | (1L << (SERVER - 266)) | (1L << (RECEIVE - 266)) | (1L << (CHANGE - 266)) | (1L << (TRACE - 266)) | (1L << (TRACKING - 266)) | (1L << (RESOURCES - 266)) | (1L << (SETTINGS - 266)) | (1L << (STATE - 266)) | (1L << (AVAILABILITY - 266)) | (1L << (CREDENTIAL - 266)) | (1L << (ENDPOINT - 266)) | (1L << (EVENT - 266)) | (1L << (NOTIFICATION - 266)) | (1L << (LINKED - 266)) | (1L << (AUDIT - 266)) | (1L << (DDL - 266)))) != 0) || ((((_la - 330)) & ~0x3f) == 0 && ((1L << (_la - 330)) & ((1L << (XML - 330)) | (1L << (IMPERSONATE - 330)) | (1L << (SECURABLES - 330)) | (1L << (AUTHENTICATE - 330)) | (1L << (EXTERNAL - 330)) | (1L << (ACCESS - 330)) | (1L << (ADMINISTER - 330)) | (1L << (BULK - 330)) | (1L << (OPERATIONS - 330)) | (1L << (UNSAFE - 330)) | (1L << (SHUTDOWN - 330)) | (1L << (SCOPED - 330)) | (1L << (CONFIGURATION - 330)) | (1L << (DATASPACE - 330)) | (1L << (SERVICE - 330)) | (1L << (CERTIFICATE - 330)) | (1L << (CONTRACT - 330)) | (1L << (ENCRYPTION - 330)) | (1L << (MASTER - 330)) | (1L << (DATA - 330)) | (1L << (SOURCE - 330)) | (1L << (FILE - 330)) | (1L << (FORMAT - 330)) | (1L << (LIBRARY - 330)) | (1L << (FULLTEXT - 330)) | (1L << (MASK - 330)) | (1L << (UNMASK - 330)) | (1L << (MESSAGE - 330)) | (1L << (REMOTE - 330)) | (1L << (BINDING - 330)) | (1L << (ROUTE - 330)) | (1L << (SECURITY - 330)) | (1L << (POLICY - 330)) | (1L << (AGGREGATE - 330)) | (1L << (QUEUE - 330)) | (1L << (RULE - 330)) | (1L << (SYNONYM - 330)) | (1L << (COLLECTION - 330)) | (1L << (SCRIPT - 330)) | (1L << (KILL - 330)) | (1L << (BACKUP - 330)) | (1L << (LOG - 330)) | (1L << (SHOWPLAN - 330)) | (1L << (SUBSCRIBE - 330)) | (1L << (QUERY - 330)) | (1L << (NOTIFICATIONS - 330)) | (1L << (CHECKPOINT - 330)) | (1L << (SEQUENCE - 330)) | (1L << (ABORT_AFTER_WAIT - 330)) | (1L << (ALLOW_PAGE_LOCKS - 330)) | (1L << (ALLOW_ROW_LOCKS - 330)) | (1L << (ALL_SPARSE_COLUMNS - 330)) | (1L << (BUCKET_COUNT - 330)) | (1L << (COLUMNSTORE_ARCHIVE - 330)) | (1L << (COLUMN_ENCRYPTION_KEY - 330)) | (1L << (COLUMN_SET - 330)) | (1L << (COMPRESSION_DELAY - 330)) | (1L << (DATABASE_DEAULT - 330)) | (1L << (DATA_COMPRESSION - 330)) | (1L << (DATA_CONSISTENCY_CHECK - 330)) | (1L << (ENCRYPTION_TYPE - 330)) | (1L << (SYSTEM_TIME - 330)) | (1L << (SYSTEM_VERSIONING - 330)) | (1L << (TEXTIMAGE_ON - 330)))) != 0) || ((((_la - 394)) & ~0x3f) == 0 && ((1L << (_la - 394)) & ((1L << (WAIT_AT_LOW_PRIORITY - 394)) | (1L << (STATISTICS_INCREMENTAL - 394)) | (1L << (STATISTICS_NORECOMPUTE - 394)) | (1L << (ROUND_ROBIN - 394)) | (1L << (SCHEMA_AND_DATA - 394)) | (1L << (SCHEMA_ONLY - 394)) | (1L << (SORT_IN_TEMPDB - 394)) | (1L << (IGNORE_DUP_KEY - 394)) | (1L << (IMPLICIT_TRANSACTIONS - 394)) | (1L << (MAX_DURATION - 394)) | (1L << (MEMORY_OPTIMIZED - 394)) | (1L << (MIGRATION_STATE - 394)) | (1L << (PAD_INDEX - 394)) | (1L << (REMOTE_DATA_ARCHIVE - 394)) | (1L << (FILESTREAM_ON - 394)) | (1L << (FILETABLE_COLLATE_FILENAME - 394)) | (1L << (FILETABLE_DIRECTORY - 394)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILTER_PREDICATE - 394)) | (1L << (HISTORY_RETENTION_PERIOD - 394)) | (1L << (HISTORY_TABLE - 394)) | (1L << (LOCK_ESCALATION - 394)) | (1L << (DROP_EXISTING - 394)) | (1L << (ROW_NUMBER - 394)) | (1L << (FIRST - 394)) | (1L << (DATETIME2 - 394)) | (1L << (OUTPUT - 394)) | (1L << (INSERTED - 394)) | (1L << (DELETED - 394)))) != 0) || ((((_la - 478)) & ~0x3f) == 0 && ((1L << (_la - 478)) & ((1L << (FILENAME - 478)) | (1L << (MAXSIZE - 478)) | (1L << (FILEGROWTH - 478)) | (1L << (UNLIMITED - 478)) | (1L << (KB - 478)) | (1L << (MB - 478)) | (1L << (GB - 478)) | (1L << (TB - 478)) | (1L << (MEMORY_OPTIMIZED_DATA - 478)) | (1L << (FILEGROUP - 478)) | (1L << (NON_TRANSACTED_ACCESS - 478)) | (1L << (DB_CHAINING - 478)) | (1L << (TRUSTWORTHY - 478)) | (1L << (FORWARD_ONLY - 478)) | (1L << (KEYSET - 478)) | (1L << (FAST_FORWARD - 478)) | (1L << (SCROLL_LOCKS - 478)) | (1L << (OPTIMISTIC - 478)) | (1L << (TYPE_WARNING - 478)) | (1L << (SCHEMABINDING - 478)) | (1L << (CALLER - 478)) | (1L << (OWNER - 478)) | (1L << (SNAPSHOT - 478)) | (1L << (REPEATABLE - 478)) | (1L << (SERIALIZABLE - 478)) | (1L << (NATIVE_COMPILATION - 478)) | (1L << (VIEW_METADATA - 478)) | (1L << (INSTEAD - 478)) | (1L << (APPEND - 478)) | (1L << (INCREMENT - 478)) | (1L << (CACHE - 478)) | (1L << (MINVALUE - 478)) | (1L << (MAXVALUE - 478)) | (1L << (RESTART - 478)) | (1L << (LOB_COMPACTION - 478)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 478)) | (1L << (REORGANIZE - 478)) | (1L << (RESUME - 478)) | (1L << (PAUSE - 478)) | (1L << (ABORT - 478)))) != 0) || ((((_la - 544)) & ~0x3f) == 0 && ((1L << (_la - 544)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 544)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 544)) | (1L << (IMMEDIATE - 544)) | (1L << (NO_WAIT - 544)) | (1L << (TARGET_RECOVERY_TIME - 544)) | (1L << (SECONDS - 544)) | (1L << (HONOR_BROKER_PRIORITY - 544)) | (1L << (ERROR_BROKER_CONVERSATIONS - 544)) | (1L << (NEW_BROKER - 544)) | (1L << (DISABLE_BROKER - 544)) | (1L << (ENABLE_BROKER - 544)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 544)) | (1L << (READ_COMMITTED_SNAPSHOT - 544)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 544)) | (1L << (RECURSIVE_TRIGGERS - 544)) | (1L << (QUOTED_IDENTIFIER - 544)) | (1L << (NUMERIC_ROUNDABORT - 544)) | (1L << (CONCAT_NULL_YIELDS_NULL - 544)) | (1L << (COMPATIBILITY_LEVEL - 544)) | (1L << (ARITHABORT - 544)) | (1L << (ANSI_WARNINGS - 544)) | (1L << (ANSI_PADDING - 544)) | (1L << (ANSI_NULLS - 544)) | (1L << (ANSI_NULL_DEFAULT - 544)) | (1L << (PAGE_VERIFY - 544)) | (1L << (CHECKSUM - 544)) | (1L << (TORN_PAGE_DETECTION - 544)) | (1L << (BULK_LOGGED - 544)) | (1L << (RECOVERY - 544)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 544)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 544)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 544)) | (1L << (EXECUTION_COUNT - 544)) | (1L << (QUERY_CAPTURE_POLICY - 544)) | (1L << (WAIT_STATS_CAPTURE_MODE - 544)) | (1L << (MAX_PLANS_PER_QUERY - 544)) | (1L << (QUERY_CAPTURE_MODE - 544)) | (1L << (SIZE_BASED_CLEANUP_MODE - 544)) | (1L << (INTERVAL_LENGTH_MINUTES - 544)) | (1L << (MAX_STORAGE_SIZE_MB - 544)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 544)) | (1L << (CLEANUP_POLICY - 544)) | (1L << (CUSTOM - 544)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 544)) | (1L << (OPERATION_MODE - 544)) | (1L << (QUERY_STORE - 544)) | (1L << (CURSOR_DEFAULT - 544)) | (1L << (GLOBAL - 544)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 544)) | (1L << (HOURS - 544)) | (1L << (CHANGE_RETENTION - 544)) | (1L << (AUTO_CLEANUP - 544)) | (1L << (CHANGE_TRACKING - 544)) | (1L << (AUTOMATIC_TUNING - 544)) | (1L << (FORCE_LAST_GOOD_PLAN - 544)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 544)) | (1L << (AUTO_UPDATE_STATISTICS - 544)) | (1L << (AUTO_SHRINK - 544)) | (1L << (AUTO_CREATE_STATISTICS - 544)) | (1L << (INCREMENTAL - 544)) | (1L << (AUTO_CLOSE - 544)) | (1L << (DATA_RETENTION - 544)) | (1L << (TEMPORAL_HISTORY_RETENTION - 544)) | (1L << (EDITION - 544)))) != 0) || ((((_la - 608)) & ~0x3f) == 0 && ((1L << (_la - 608)) & ((1L << (MIXED_PAGE_ALLOCATION - 608)) | (1L << (DISABLED - 608)) | (1L << (ALLOWED - 608)) | (1L << (HADR - 608)) | (1L << (MULTI_USER - 608)) | (1L << (RESTRICTED_USER - 608)) | (1L << (SINGLE_USER - 608)) | (1L << (OFFLINE - 608)) | (1L << (EMERGENCY - 608)) | (1L << (SUSPEND - 608)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 608)) | (1L << (ELASTIC_POOL - 608)) | (1L << (SERVICE_OBJECTIVE - 608)) | (1L << (DATABASE_NAME - 608)) | (1L << (ALLOW_CONNECTIONS - 608)) | (1L << (GEO - 608)) | (1L << (NAMED - 608)) | (1L << (DATEFIRST - 608)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 608)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 608)) | (1L << (SECONDARY - 608)) | (1L << (FAILOVER - 608)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 608)) | (1L << (DEFAULT_LANGUAGE - 608)) | (1L << (INLINE - 608)) | (1L << (NESTED_TRIGGERS - 608)) | (1L << (TRANSFORM_NOISE_WORDS - 608)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 608)) | (1L << (PERSISTENT_LOG_BUFFER - 608)) | (1L << (DIRECTORY_NAME - 608)) | (1L << (DATEFORMAT - 608)) | (1L << (DELAYED_DURABILITY - 608)) | (1L << (AUTHORIZATION - 608)) | (1L << (TRANSFER - 608)) | (1L << (SEARCH - 608)) | (1L << (MEMBER - 608)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
1487 				{
1488 				setState(1045);
1489 				_errHandler.sync(this);
1490 				switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
1491 				case 1:
1492 					{
1493 					setState(1043);
1494 					transactionName();
1495 					}
1496 					break;
1497 				case 2:
1498 					{
1499 					setState(1044);
1500 					transactionVariableName();
1501 					}
1502 					break;
1503 				}
1504 				setState(1053);
1505 				_errHandler.sync(this);
1506 				_la = _input.LA(1);
1507 				if (_la==WITH) {
1508 					{
1509 					setState(1047);
1510 					match(WITH);
1511 					setState(1048);
1512 					match(MARK);
1513 					setState(1051);
1514 					_errHandler.sync(this);
1515 					switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
1516 					case 1:
1517 						{
1518 						setState(1049);
1519 						stringLiterals();
1520 						}
1521 						break;
1522 					case 2:
1523 						{
1524 						setState(1050);
1525 						match(NCHAR_TEXT);
1526 						}
1527 						break;
1528 					}
1529 					}
1530 				}
1531 
1532 				}
1533 			}
1534 
1535 			}
1536 		}
1537 		catch (RecognitionException re) {
1538 			_localctx.exception = re;
1539 			_errHandler.reportError(this, re);
1540 			_errHandler.recover(this, re);
1541 		}
1542 		finally {
1543 			exitRule();
1544 		}
1545 		return _localctx;
1546 	}
1547 
1548 	public static class BeginDistributedTransactionContext extends ParserRuleContext {
1549 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
1550 		public TerminalNode DISTRIBUTED() { return getToken(SQLServerStatementParser.DISTRIBUTED, 0); }
1551 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1552 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1553 		public TransactionNameContext transactionName() {
1554 			return getRuleContext(TransactionNameContext.class,0);
1555 		}
1556 		public TransactionVariableNameContext transactionVariableName() {
1557 			return getRuleContext(TransactionVariableNameContext.class,0);
1558 		}
1559 		public BeginDistributedTransactionContext(ParserRuleContext parent, int invokingState) {
1560 			super(parent, invokingState);
1561 		}
1562 		@Override public int getRuleIndex() { return RULE_beginDistributedTransaction; }
1563 		@Override
1564 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1565 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBeginDistributedTransaction(this);
1566 			else return visitor.visitChildren(this);
1567 		}
1568 	}
1569 
1570 	public final BeginDistributedTransactionContext beginDistributedTransaction() throws RecognitionException {
1571 		BeginDistributedTransactionContext _localctx = new BeginDistributedTransactionContext(_ctx, getState());
1572 		enterRule(_localctx, 12, RULE_beginDistributedTransaction);
1573 		int _la;
1574 		try {
1575 			enterOuterAlt(_localctx, 1);
1576 			{
1577 			setState(1057);
1578 			match(BEGIN);
1579 			setState(1058);
1580 			match(DISTRIBUTED);
1581 			setState(1059);
1582 			_la = _input.LA(1);
1583 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1584 			_errHandler.recoverInline(this);
1585 			}
1586 			else {
1587 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1588 				_errHandler.reportMatch(this);
1589 				consume();
1590 			}
1591 			setState(1062);
1592 			_errHandler.sync(this);
1593 			switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
1594 			case 1:
1595 				{
1596 				setState(1060);
1597 				transactionName();
1598 				}
1599 				break;
1600 			case 2:
1601 				{
1602 				setState(1061);
1603 				transactionVariableName();
1604 				}
1605 				break;
1606 			}
1607 			}
1608 		}
1609 		catch (RecognitionException re) {
1610 			_localctx.exception = re;
1611 			_errHandler.reportError(this, re);
1612 			_errHandler.recover(this, re);
1613 		}
1614 		finally {
1615 			exitRule();
1616 		}
1617 		return _localctx;
1618 	}
1619 
1620 	public static class CommitContext extends ParserRuleContext {
1621 		public TerminalNode COMMIT() { return getToken(SQLServerStatementParser.COMMIT, 0); }
1622 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
1623 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
1624 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
1625 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
1626 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
1627 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1628 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1629 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
1630 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
1631 		public TransactionNameContext transactionName() {
1632 			return getRuleContext(TransactionNameContext.class,0);
1633 		}
1634 		public TransactionVariableNameContext transactionVariableName() {
1635 			return getRuleContext(TransactionVariableNameContext.class,0);
1636 		}
1637 		public CommitContext(ParserRuleContext parent, int invokingState) {
1638 			super(parent, invokingState);
1639 		}
1640 		@Override public int getRuleIndex() { return RULE_commit; }
1641 		@Override
1642 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1643 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommit(this);
1644 			else return visitor.visitChildren(this);
1645 		}
1646 	}
1647 
1648 	public final CommitContext commit() throws RecognitionException {
1649 		CommitContext _localctx = new CommitContext(_ctx, getState());
1650 		enterRule(_localctx, 14, RULE_commit);
1651 		int _la;
1652 		try {
1653 			enterOuterAlt(_localctx, 1);
1654 			{
1655 			setState(1064);
1656 			match(COMMIT);
1657 			setState(1070);
1658 			_errHandler.sync(this);
1659 			_la = _input.LA(1);
1660 			if (_la==TRANSACTION || _la==TRAN) {
1661 				{
1662 				setState(1065);
1663 				_la = _input.LA(1);
1664 				if ( !(_la==TRANSACTION || _la==TRAN) ) {
1665 				_errHandler.recoverInline(this);
1666 				}
1667 				else {
1668 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1669 					_errHandler.reportMatch(this);
1670 					consume();
1671 				}
1672 				setState(1068);
1673 				_errHandler.sync(this);
1674 				switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
1675 				case 1:
1676 					{
1677 					setState(1066);
1678 					transactionName();
1679 					}
1680 					break;
1681 				case 2:
1682 					{
1683 					setState(1067);
1684 					transactionVariableName();
1685 					}
1686 					break;
1687 				}
1688 				}
1689 			}
1690 
1691 			setState(1078);
1692 			_errHandler.sync(this);
1693 			_la = _input.LA(1);
1694 			if (_la==WITH) {
1695 				{
1696 				setState(1072);
1697 				match(WITH);
1698 				setState(1073);
1699 				match(LP_);
1700 				setState(1074);
1701 				match(DELAYED_DURABILITY);
1702 				setState(1075);
1703 				match(EQ_);
1704 				setState(1076);
1705 				_la = _input.LA(1);
1706 				if ( !(_la==ON || _la==OFF) ) {
1707 				_errHandler.recoverInline(this);
1708 				}
1709 				else {
1710 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1711 					_errHandler.reportMatch(this);
1712 					consume();
1713 				}
1714 				setState(1077);
1715 				match(RP_);
1716 				}
1717 			}
1718 
1719 			}
1720 		}
1721 		catch (RecognitionException re) {
1722 			_localctx.exception = re;
1723 			_errHandler.reportError(this, re);
1724 			_errHandler.recover(this, re);
1725 		}
1726 		finally {
1727 			exitRule();
1728 		}
1729 		return _localctx;
1730 	}
1731 
1732 	public static class CommitWorkContext extends ParserRuleContext {
1733 		public TerminalNode COMMIT() { return getToken(SQLServerStatementParser.COMMIT, 0); }
1734 		public TerminalNode WORK() { return getToken(SQLServerStatementParser.WORK, 0); }
1735 		public CommitWorkContext(ParserRuleContext parent, int invokingState) {
1736 			super(parent, invokingState);
1737 		}
1738 		@Override public int getRuleIndex() { return RULE_commitWork; }
1739 		@Override
1740 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1741 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommitWork(this);
1742 			else return visitor.visitChildren(this);
1743 		}
1744 	}
1745 
1746 	public final CommitWorkContext commitWork() throws RecognitionException {
1747 		CommitWorkContext _localctx = new CommitWorkContext(_ctx, getState());
1748 		enterRule(_localctx, 16, RULE_commitWork);
1749 		int _la;
1750 		try {
1751 			enterOuterAlt(_localctx, 1);
1752 			{
1753 			setState(1080);
1754 			match(COMMIT);
1755 			setState(1082);
1756 			_errHandler.sync(this);
1757 			_la = _input.LA(1);
1758 			if (_la==WORK) {
1759 				{
1760 				setState(1081);
1761 				match(WORK);
1762 				}
1763 			}
1764 
1765 			}
1766 		}
1767 		catch (RecognitionException re) {
1768 			_localctx.exception = re;
1769 			_errHandler.reportError(this, re);
1770 			_errHandler.recover(this, re);
1771 		}
1772 		finally {
1773 			exitRule();
1774 		}
1775 		return _localctx;
1776 	}
1777 
1778 	public static class RollbackContext extends ParserRuleContext {
1779 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
1780 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1781 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1782 		public TransactionNameContext transactionName() {
1783 			return getRuleContext(TransactionNameContext.class,0);
1784 		}
1785 		public TransactionVariableNameContext transactionVariableName() {
1786 			return getRuleContext(TransactionVariableNameContext.class,0);
1787 		}
1788 		public SavepointNameContext savepointName() {
1789 			return getRuleContext(SavepointNameContext.class,0);
1790 		}
1791 		public SavepointVariableNameContext savepointVariableName() {
1792 			return getRuleContext(SavepointVariableNameContext.class,0);
1793 		}
1794 		public RollbackContext(ParserRuleContext parent, int invokingState) {
1795 			super(parent, invokingState);
1796 		}
1797 		@Override public int getRuleIndex() { return RULE_rollback; }
1798 		@Override
1799 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1800 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRollback(this);
1801 			else return visitor.visitChildren(this);
1802 		}
1803 	}
1804 
1805 	public final RollbackContext rollback() throws RecognitionException {
1806 		RollbackContext _localctx = new RollbackContext(_ctx, getState());
1807 		enterRule(_localctx, 18, RULE_rollback);
1808 		int _la;
1809 		try {
1810 			enterOuterAlt(_localctx, 1);
1811 			{
1812 			setState(1084);
1813 			match(ROLLBACK);
1814 			setState(1085);
1815 			_la = _input.LA(1);
1816 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1817 			_errHandler.recoverInline(this);
1818 			}
1819 			else {
1820 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1821 				_errHandler.reportMatch(this);
1822 				consume();
1823 			}
1824 			setState(1090);
1825 			_errHandler.sync(this);
1826 			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
1827 			case 1:
1828 				{
1829 				setState(1086);
1830 				transactionName();
1831 				}
1832 				break;
1833 			case 2:
1834 				{
1835 				setState(1087);
1836 				transactionVariableName();
1837 				}
1838 				break;
1839 			case 3:
1840 				{
1841 				setState(1088);
1842 				savepointName();
1843 				}
1844 				break;
1845 			case 4:
1846 				{
1847 				setState(1089);
1848 				savepointVariableName();
1849 				}
1850 				break;
1851 			}
1852 			}
1853 		}
1854 		catch (RecognitionException re) {
1855 			_localctx.exception = re;
1856 			_errHandler.reportError(this, re);
1857 			_errHandler.recover(this, re);
1858 		}
1859 		finally {
1860 			exitRule();
1861 		}
1862 		return _localctx;
1863 	}
1864 
1865 	public static class RollbackWorkContext extends ParserRuleContext {
1866 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
1867 		public TerminalNode WORK() { return getToken(SQLServerStatementParser.WORK, 0); }
1868 		public RollbackWorkContext(ParserRuleContext parent, int invokingState) {
1869 			super(parent, invokingState);
1870 		}
1871 		@Override public int getRuleIndex() { return RULE_rollbackWork; }
1872 		@Override
1873 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1874 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRollbackWork(this);
1875 			else return visitor.visitChildren(this);
1876 		}
1877 	}
1878 
1879 	public final RollbackWorkContext rollbackWork() throws RecognitionException {
1880 		RollbackWorkContext _localctx = new RollbackWorkContext(_ctx, getState());
1881 		enterRule(_localctx, 20, RULE_rollbackWork);
1882 		int _la;
1883 		try {
1884 			enterOuterAlt(_localctx, 1);
1885 			{
1886 			setState(1092);
1887 			match(ROLLBACK);
1888 			setState(1094);
1889 			_errHandler.sync(this);
1890 			_la = _input.LA(1);
1891 			if (_la==WORK) {
1892 				{
1893 				setState(1093);
1894 				match(WORK);
1895 				}
1896 			}
1897 
1898 			}
1899 		}
1900 		catch (RecognitionException re) {
1901 			_localctx.exception = re;
1902 			_errHandler.reportError(this, re);
1903 			_errHandler.recover(this, re);
1904 		}
1905 		finally {
1906 			exitRule();
1907 		}
1908 		return _localctx;
1909 	}
1910 
1911 	public static class SavepointContext extends ParserRuleContext {
1912 		public TerminalNode SAVE() { return getToken(SQLServerStatementParser.SAVE, 0); }
1913 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1914 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1915 		public SavepointNameContext savepointName() {
1916 			return getRuleContext(SavepointNameContext.class,0);
1917 		}
1918 		public SavepointVariableNameContext savepointVariableName() {
1919 			return getRuleContext(SavepointVariableNameContext.class,0);
1920 		}
1921 		public SavepointContext(ParserRuleContext parent, int invokingState) {
1922 			super(parent, invokingState);
1923 		}
1924 		@Override public int getRuleIndex() { return RULE_savepoint; }
1925 		@Override
1926 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1927 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepoint(this);
1928 			else return visitor.visitChildren(this);
1929 		}
1930 	}
1931 
1932 	public final SavepointContext savepoint() throws RecognitionException {
1933 		SavepointContext _localctx = new SavepointContext(_ctx, getState());
1934 		enterRule(_localctx, 22, RULE_savepoint);
1935 		int _la;
1936 		try {
1937 			enterOuterAlt(_localctx, 1);
1938 			{
1939 			setState(1096);
1940 			match(SAVE);
1941 			setState(1097);
1942 			_la = _input.LA(1);
1943 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1944 			_errHandler.recoverInline(this);
1945 			}
1946 			else {
1947 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1948 				_errHandler.reportMatch(this);
1949 				consume();
1950 			}
1951 			setState(1100);
1952 			_errHandler.sync(this);
1953 			switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
1954 			case 1:
1955 				{
1956 				setState(1098);
1957 				savepointName();
1958 				}
1959 				break;
1960 			case 2:
1961 				{
1962 				setState(1099);
1963 				savepointVariableName();
1964 				}
1965 				break;
1966 			}
1967 			}
1968 		}
1969 		catch (RecognitionException re) {
1970 			_localctx.exception = re;
1971 			_errHandler.reportError(this, re);
1972 			_errHandler.recover(this, re);
1973 		}
1974 		finally {
1975 			exitRule();
1976 		}
1977 		return _localctx;
1978 	}
1979 
1980 	public static class ParameterMarkerContext extends ParserRuleContext {
1981 		public TerminalNode QUESTION_() { return getToken(SQLServerStatementParser.QUESTION_, 0); }
1982 		public ParameterMarkerContext(ParserRuleContext parent, int invokingState) {
1983 			super(parent, invokingState);
1984 		}
1985 		@Override public int getRuleIndex() { return RULE_parameterMarker; }
1986 		@Override
1987 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1988 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitParameterMarker(this);
1989 			else return visitor.visitChildren(this);
1990 		}
1991 	}
1992 
1993 	public final ParameterMarkerContext parameterMarker() throws RecognitionException {
1994 		ParameterMarkerContext _localctx = new ParameterMarkerContext(_ctx, getState());
1995 		enterRule(_localctx, 24, RULE_parameterMarker);
1996 		try {
1997 			enterOuterAlt(_localctx, 1);
1998 			{
1999 			setState(1102);
2000 			match(QUESTION_);
2001 			}
2002 		}
2003 		catch (RecognitionException re) {
2004 			_localctx.exception = re;
2005 			_errHandler.reportError(this, re);
2006 			_errHandler.recover(this, re);
2007 		}
2008 		finally {
2009 			exitRule();
2010 		}
2011 		return _localctx;
2012 	}
2013 
2014 	public static class LiteralsContext extends ParserRuleContext {
2015 		public StringLiteralsContext stringLiterals() {
2016 			return getRuleContext(StringLiteralsContext.class,0);
2017 		}
2018 		public NumberLiteralsContext numberLiterals() {
2019 			return getRuleContext(NumberLiteralsContext.class,0);
2020 		}
2021 		public DateTimeLiteralsContext dateTimeLiterals() {
2022 			return getRuleContext(DateTimeLiteralsContext.class,0);
2023 		}
2024 		public HexadecimalLiteralsContext hexadecimalLiterals() {
2025 			return getRuleContext(HexadecimalLiteralsContext.class,0);
2026 		}
2027 		public BitValueLiteralsContext bitValueLiterals() {
2028 			return getRuleContext(BitValueLiteralsContext.class,0);
2029 		}
2030 		public BooleanLiteralsContext booleanLiterals() {
2031 			return getRuleContext(BooleanLiteralsContext.class,0);
2032 		}
2033 		public NullValueLiteralsContext nullValueLiterals() {
2034 			return getRuleContext(NullValueLiteralsContext.class,0);
2035 		}
2036 		public LiteralsContext(ParserRuleContext parent, int invokingState) {
2037 			super(parent, invokingState);
2038 		}
2039 		@Override public int getRuleIndex() { return RULE_literals; }
2040 		@Override
2041 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2042 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLiterals(this);
2043 			else return visitor.visitChildren(this);
2044 		}
2045 	}
2046 
2047 	public final LiteralsContext literals() throws RecognitionException {
2048 		LiteralsContext _localctx = new LiteralsContext(_ctx, getState());
2049 		enterRule(_localctx, 26, RULE_literals);
2050 		try {
2051 			setState(1111);
2052 			_errHandler.sync(this);
2053 			switch (_input.LA(1)) {
2054 			case STRING_:
2055 			case NCHAR_TEXT:
2056 				enterOuterAlt(_localctx, 1);
2057 				{
2058 				setState(1104);
2059 				stringLiterals();
2060 				}
2061 				break;
2062 			case PLUS_:
2063 			case MINUS_:
2064 			case NUMBER_:
2065 				enterOuterAlt(_localctx, 2);
2066 				{
2067 				setState(1105);
2068 				numberLiterals();
2069 				}
2070 				break;
2071 			case LBE_:
2072 			case DATE:
2073 			case TIME:
2074 			case TIMESTAMP:
2075 				enterOuterAlt(_localctx, 3);
2076 				{
2077 				setState(1106);
2078 				dateTimeLiterals();
2079 				}
2080 				break;
2081 			case HEX_DIGIT_:
2082 				enterOuterAlt(_localctx, 4);
2083 				{
2084 				setState(1107);
2085 				hexadecimalLiterals();
2086 				}
2087 				break;
2088 			case BIT_NUM_:
2089 				enterOuterAlt(_localctx, 5);
2090 				{
2091 				setState(1108);
2092 				bitValueLiterals();
2093 				}
2094 				break;
2095 			case TRUE:
2096 			case FALSE:
2097 				enterOuterAlt(_localctx, 6);
2098 				{
2099 				setState(1109);
2100 				booleanLiterals();
2101 				}
2102 				break;
2103 			case NULL:
2104 				enterOuterAlt(_localctx, 7);
2105 				{
2106 				setState(1110);
2107 				nullValueLiterals();
2108 				}
2109 				break;
2110 			default:
2111 				throw new NoViableAltException(this);
2112 			}
2113 		}
2114 		catch (RecognitionException re) {
2115 			_localctx.exception = re;
2116 			_errHandler.reportError(this, re);
2117 			_errHandler.recover(this, re);
2118 		}
2119 		finally {
2120 			exitRule();
2121 		}
2122 		return _localctx;
2123 	}
2124 
2125 	public static class StringLiteralsContext extends ParserRuleContext {
2126 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
2127 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
2128 		public StringLiteralsContext(ParserRuleContext parent, int invokingState) {
2129 			super(parent, invokingState);
2130 		}
2131 		@Override public int getRuleIndex() { return RULE_stringLiterals; }
2132 		@Override
2133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStringLiterals(this);
2135 			else return visitor.visitChildren(this);
2136 		}
2137 	}
2138 
2139 	public final StringLiteralsContext stringLiterals() throws RecognitionException {
2140 		StringLiteralsContext _localctx = new StringLiteralsContext(_ctx, getState());
2141 		enterRule(_localctx, 28, RULE_stringLiterals);
2142 		int _la;
2143 		try {
2144 			enterOuterAlt(_localctx, 1);
2145 			{
2146 			setState(1113);
2147 			_la = _input.LA(1);
2148 			if ( !(_la==STRING_ || _la==NCHAR_TEXT) ) {
2149 			_errHandler.recoverInline(this);
2150 			}
2151 			else {
2152 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2153 				_errHandler.reportMatch(this);
2154 				consume();
2155 			}
2156 			}
2157 		}
2158 		catch (RecognitionException re) {
2159 			_localctx.exception = re;
2160 			_errHandler.reportError(this, re);
2161 			_errHandler.recover(this, re);
2162 		}
2163 		finally {
2164 			exitRule();
2165 		}
2166 		return _localctx;
2167 	}
2168 
2169 	public static class NumberLiteralsContext extends ParserRuleContext {
2170 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
2171 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
2172 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
2173 		public NumberLiteralsContext(ParserRuleContext parent, int invokingState) {
2174 			super(parent, invokingState);
2175 		}
2176 		@Override public int getRuleIndex() { return RULE_numberLiterals; }
2177 		@Override
2178 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2179 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNumberLiterals(this);
2180 			else return visitor.visitChildren(this);
2181 		}
2182 	}
2183 
2184 	public final NumberLiteralsContext numberLiterals() throws RecognitionException {
2185 		NumberLiteralsContext _localctx = new NumberLiteralsContext(_ctx, getState());
2186 		enterRule(_localctx, 30, RULE_numberLiterals);
2187 		int _la;
2188 		try {
2189 			enterOuterAlt(_localctx, 1);
2190 			{
2191 			setState(1116);
2192 			_errHandler.sync(this);
2193 			_la = _input.LA(1);
2194 			if (_la==PLUS_ || _la==MINUS_) {
2195 				{
2196 				setState(1115);
2197 				_la = _input.LA(1);
2198 				if ( !(_la==PLUS_ || _la==MINUS_) ) {
2199 				_errHandler.recoverInline(this);
2200 				}
2201 				else {
2202 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2203 					_errHandler.reportMatch(this);
2204 					consume();
2205 				}
2206 				}
2207 			}
2208 
2209 			setState(1118);
2210 			match(NUMBER_);
2211 			}
2212 		}
2213 		catch (RecognitionException re) {
2214 			_localctx.exception = re;
2215 			_errHandler.reportError(this, re);
2216 			_errHandler.recover(this, re);
2217 		}
2218 		finally {
2219 			exitRule();
2220 		}
2221 		return _localctx;
2222 	}
2223 
2224 	public static class DateTimeLiteralsContext extends ParserRuleContext {
2225 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
2226 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
2227 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
2228 		public TerminalNode TIMESTAMP() { return getToken(SQLServerStatementParser.TIMESTAMP, 0); }
2229 		public TerminalNode LBE_() { return getToken(SQLServerStatementParser.LBE_, 0); }
2230 		public IdentifierContext identifier() {
2231 			return getRuleContext(IdentifierContext.class,0);
2232 		}
2233 		public TerminalNode RBE_() { return getToken(SQLServerStatementParser.RBE_, 0); }
2234 		public DateTimeLiteralsContext(ParserRuleContext parent, int invokingState) {
2235 			super(parent, invokingState);
2236 		}
2237 		@Override public int getRuleIndex() { return RULE_dateTimeLiterals; }
2238 		@Override
2239 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2240 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDateTimeLiterals(this);
2241 			else return visitor.visitChildren(this);
2242 		}
2243 	}
2244 
2245 	public final DateTimeLiteralsContext dateTimeLiterals() throws RecognitionException {
2246 		DateTimeLiteralsContext _localctx = new DateTimeLiteralsContext(_ctx, getState());
2247 		enterRule(_localctx, 32, RULE_dateTimeLiterals);
2248 		int _la;
2249 		try {
2250 			setState(1127);
2251 			_errHandler.sync(this);
2252 			switch (_input.LA(1)) {
2253 			case DATE:
2254 			case TIME:
2255 			case TIMESTAMP:
2256 				enterOuterAlt(_localctx, 1);
2257 				{
2258 				setState(1120);
2259 				_la = _input.LA(1);
2260 				if ( !(((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)))) != 0)) ) {
2261 				_errHandler.recoverInline(this);
2262 				}
2263 				else {
2264 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2265 					_errHandler.reportMatch(this);
2266 					consume();
2267 				}
2268 				setState(1121);
2269 				match(STRING_);
2270 				}
2271 				break;
2272 			case LBE_:
2273 				enterOuterAlt(_localctx, 2);
2274 				{
2275 				setState(1122);
2276 				match(LBE_);
2277 				setState(1123);
2278 				identifier();
2279 				setState(1124);
2280 				match(STRING_);
2281 				setState(1125);
2282 				match(RBE_);
2283 				}
2284 				break;
2285 			default:
2286 				throw new NoViableAltException(this);
2287 			}
2288 		}
2289 		catch (RecognitionException re) {
2290 			_localctx.exception = re;
2291 			_errHandler.reportError(this, re);
2292 			_errHandler.recover(this, re);
2293 		}
2294 		finally {
2295 			exitRule();
2296 		}
2297 		return _localctx;
2298 	}
2299 
2300 	public static class HexadecimalLiteralsContext extends ParserRuleContext {
2301 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
2302 		public HexadecimalLiteralsContext(ParserRuleContext parent, int invokingState) {
2303 			super(parent, invokingState);
2304 		}
2305 		@Override public int getRuleIndex() { return RULE_hexadecimalLiterals; }
2306 		@Override
2307 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2308 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHexadecimalLiterals(this);
2309 			else return visitor.visitChildren(this);
2310 		}
2311 	}
2312 
2313 	public final HexadecimalLiteralsContext hexadecimalLiterals() throws RecognitionException {
2314 		HexadecimalLiteralsContext _localctx = new HexadecimalLiteralsContext(_ctx, getState());
2315 		enterRule(_localctx, 34, RULE_hexadecimalLiterals);
2316 		try {
2317 			enterOuterAlt(_localctx, 1);
2318 			{
2319 			setState(1129);
2320 			match(HEX_DIGIT_);
2321 			}
2322 		}
2323 		catch (RecognitionException re) {
2324 			_localctx.exception = re;
2325 			_errHandler.reportError(this, re);
2326 			_errHandler.recover(this, re);
2327 		}
2328 		finally {
2329 			exitRule();
2330 		}
2331 		return _localctx;
2332 	}
2333 
2334 	public static class BitValueLiteralsContext extends ParserRuleContext {
2335 		public TerminalNode BIT_NUM_() { return getToken(SQLServerStatementParser.BIT_NUM_, 0); }
2336 		public BitValueLiteralsContext(ParserRuleContext parent, int invokingState) {
2337 			super(parent, invokingState);
2338 		}
2339 		@Override public int getRuleIndex() { return RULE_bitValueLiterals; }
2340 		@Override
2341 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2342 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBitValueLiterals(this);
2343 			else return visitor.visitChildren(this);
2344 		}
2345 	}
2346 
2347 	public final BitValueLiteralsContext bitValueLiterals() throws RecognitionException {
2348 		BitValueLiteralsContext _localctx = new BitValueLiteralsContext(_ctx, getState());
2349 		enterRule(_localctx, 36, RULE_bitValueLiterals);
2350 		try {
2351 			enterOuterAlt(_localctx, 1);
2352 			{
2353 			setState(1131);
2354 			match(BIT_NUM_);
2355 			}
2356 		}
2357 		catch (RecognitionException re) {
2358 			_localctx.exception = re;
2359 			_errHandler.reportError(this, re);
2360 			_errHandler.recover(this, re);
2361 		}
2362 		finally {
2363 			exitRule();
2364 		}
2365 		return _localctx;
2366 	}
2367 
2368 	public static class BooleanLiteralsContext extends ParserRuleContext {
2369 		public TerminalNode TRUE() { return getToken(SQLServerStatementParser.TRUE, 0); }
2370 		public TerminalNode FALSE() { return getToken(SQLServerStatementParser.FALSE, 0); }
2371 		public BooleanLiteralsContext(ParserRuleContext parent, int invokingState) {
2372 			super(parent, invokingState);
2373 		}
2374 		@Override public int getRuleIndex() { return RULE_booleanLiterals; }
2375 		@Override
2376 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2377 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBooleanLiterals(this);
2378 			else return visitor.visitChildren(this);
2379 		}
2380 	}
2381 
2382 	public final BooleanLiteralsContext booleanLiterals() throws RecognitionException {
2383 		BooleanLiteralsContext _localctx = new BooleanLiteralsContext(_ctx, getState());
2384 		enterRule(_localctx, 38, RULE_booleanLiterals);
2385 		int _la;
2386 		try {
2387 			enterOuterAlt(_localctx, 1);
2388 			{
2389 			setState(1133);
2390 			_la = _input.LA(1);
2391 			if ( !(_la==TRUE || _la==FALSE) ) {
2392 			_errHandler.recoverInline(this);
2393 			}
2394 			else {
2395 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2396 				_errHandler.reportMatch(this);
2397 				consume();
2398 			}
2399 			}
2400 		}
2401 		catch (RecognitionException re) {
2402 			_localctx.exception = re;
2403 			_errHandler.reportError(this, re);
2404 			_errHandler.recover(this, re);
2405 		}
2406 		finally {
2407 			exitRule();
2408 		}
2409 		return _localctx;
2410 	}
2411 
2412 	public static class NullValueLiteralsContext extends ParserRuleContext {
2413 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
2414 		public NullValueLiteralsContext(ParserRuleContext parent, int invokingState) {
2415 			super(parent, invokingState);
2416 		}
2417 		@Override public int getRuleIndex() { return RULE_nullValueLiterals; }
2418 		@Override
2419 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2420 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNullValueLiterals(this);
2421 			else return visitor.visitChildren(this);
2422 		}
2423 	}
2424 
2425 	public final NullValueLiteralsContext nullValueLiterals() throws RecognitionException {
2426 		NullValueLiteralsContext _localctx = new NullValueLiteralsContext(_ctx, getState());
2427 		enterRule(_localctx, 40, RULE_nullValueLiterals);
2428 		try {
2429 			enterOuterAlt(_localctx, 1);
2430 			{
2431 			setState(1135);
2432 			match(NULL);
2433 			}
2434 		}
2435 		catch (RecognitionException re) {
2436 			_localctx.exception = re;
2437 			_errHandler.reportError(this, re);
2438 			_errHandler.recover(this, re);
2439 		}
2440 		finally {
2441 			exitRule();
2442 		}
2443 		return _localctx;
2444 	}
2445 
2446 	public static class IdentifierContext extends ParserRuleContext {
2447 		public RegularIdentifierContext regularIdentifier() {
2448 			return getRuleContext(RegularIdentifierContext.class,0);
2449 		}
2450 		public DelimitedIdentifierContext delimitedIdentifier() {
2451 			return getRuleContext(DelimitedIdentifierContext.class,0);
2452 		}
2453 		public IdentifierContext(ParserRuleContext parent, int invokingState) {
2454 			super(parent, invokingState);
2455 		}
2456 		@Override public int getRuleIndex() { return RULE_identifier; }
2457 		@Override
2458 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2459 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIdentifier(this);
2460 			else return visitor.visitChildren(this);
2461 		}
2462 	}
2463 
2464 	public final IdentifierContext identifier() throws RecognitionException {
2465 		IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
2466 		enterRule(_localctx, 42, RULE_identifier);
2467 		try {
2468 			setState(1139);
2469 			_errHandler.sync(this);
2470 			switch (_input.LA(1)) {
2471 			case TRUNCATE:
2472 			case SCHEMA:
2473 			case FUNCTION:
2474 			case TRIGGER:
2475 			case CAST:
2476 			case GROUP:
2477 			case LIMIT:
2478 			case OFFSET:
2479 			case SAVEPOINT:
2480 			case BOOLEAN:
2481 			case ARRAY:
2482 			case DATE:
2483 			case LOCALTIME:
2484 			case LOCALTIMESTAMP:
2485 			case QUARTER:
2486 			case WEEK:
2487 			case DAY:
2488 			case MICROSECOND:
2489 			case MAX:
2490 			case MIN:
2491 			case SUM:
2492 			case COUNT:
2493 			case AVG:
2494 			case ENABLE:
2495 			case DISABLE:
2496 			case INSTANCE:
2497 			case DO:
2498 			case DEFINER:
2499 			case SQL:
2500 			case CASCADED:
2501 			case LOCAL:
2502 			case NEXT:
2503 			case NAME:
2504 			case INTEGER:
2505 			case TYPE:
2506 			case READ_ONLY:
2507 			case DATABASE:
2508 			case DATEPART:
2509 			case PASSWORD:
2510 			case BINARY:
2511 			case HIDDEN_:
2512 			case MOD:
2513 			case PARTITION:
2514 			case PARTITIONS:
2515 			case TOP:
2516 			case ROW:
2517 			case ROWS:
2518 			case XOR:
2519 			case ALWAYS:
2520 			case ROLE:
2521 			case START:
2522 			case ALGORITHM:
2523 			case AUTO:
2524 			case BLOCKERS:
2525 			case CLUSTERED:
2526 			case NONCLUSTERED:
2527 			case COLUMNSTORE:
2528 			case CONTENT:
2529 			case YEARS:
2530 			case MONTHS:
2531 			case WEEKS:
2532 			case DAYS:
2533 			case MINUTES:
2534 			case DENY:
2535 			case DETERMINISTIC:
2536 			case DISTRIBUTION:
2537 			case DOCUMENT:
2538 			case DURABILITY:
2539 			case ENCRYPTED:
2540 			case FILESTREAM:
2541 			case FILETABLE:
2542 			case FILLFACTOR:
2543 			case FOLLOWING:
2544 			case HASH:
2545 			case HEAP:
2546 			case INBOUND:
2547 			case OUTBOUND:
2548 			case UNBOUNDED:
2549 			case INFINITE:
2550 			case LOGIN:
2551 			case MASKED:
2552 			case MAXDOP:
2553 			case MOVE:
2554 			case NOCHECK:
2555 			case OBJECT:
2556 			case OFF:
2557 			case ONLINE:
2558 			case OVER:
2559 			case PAGE:
2560 			case PAUSED:
2561 			case PERIOD:
2562 			case PERSISTED:
2563 			case PRECEDING:
2564 			case RANDOMIZED:
2565 			case RANGE:
2566 			case REBUILD:
2567 			case REPLICATE:
2568 			case REPLICATION:
2569 			case RESUMABLE:
2570 			case ROWGUIDCOL:
2571 			case SAVE:
2572 			case SELF:
2573 			case SPARSE:
2574 			case SWITCH:
2575 			case TRAN:
2576 			case TRANCOUNT:
2577 			case CONTROL:
2578 			case CONCAT:
2579 			case TAKE:
2580 			case OWNERSHIP:
2581 			case DEFINITION:
2582 			case APPLICATION:
2583 			case ASSEMBLY:
2584 			case SYMMETRIC:
2585 			case ASYMMETRIC:
2586 			case SERVER:
2587 			case RECEIVE:
2588 			case CHANGE:
2589 			case TRACE:
2590 			case TRACKING:
2591 			case RESOURCES:
2592 			case SETTINGS:
2593 			case STATE:
2594 			case AVAILABILITY:
2595 			case CREDENTIAL:
2596 			case ENDPOINT:
2597 			case EVENT:
2598 			case NOTIFICATION:
2599 			case LINKED:
2600 			case AUDIT:
2601 			case DDL:
2602 			case XML:
2603 			case IMPERSONATE:
2604 			case SECURABLES:
2605 			case AUTHENTICATE:
2606 			case EXTERNAL:
2607 			case ACCESS:
2608 			case ADMINISTER:
2609 			case BULK:
2610 			case OPERATIONS:
2611 			case UNSAFE:
2612 			case SHUTDOWN:
2613 			case SCOPED:
2614 			case CONFIGURATION:
2615 			case DATASPACE:
2616 			case SERVICE:
2617 			case CERTIFICATE:
2618 			case CONTRACT:
2619 			case ENCRYPTION:
2620 			case MASTER:
2621 			case DATA:
2622 			case SOURCE:
2623 			case FILE:
2624 			case FORMAT:
2625 			case LIBRARY:
2626 			case FULLTEXT:
2627 			case MASK:
2628 			case UNMASK:
2629 			case MESSAGE:
2630 			case REMOTE:
2631 			case BINDING:
2632 			case ROUTE:
2633 			case SECURITY:
2634 			case POLICY:
2635 			case AGGREGATE:
2636 			case QUEUE:
2637 			case RULE:
2638 			case SYNONYM:
2639 			case COLLECTION:
2640 			case SCRIPT:
2641 			case KILL:
2642 			case BACKUP:
2643 			case LOG:
2644 			case SHOWPLAN:
2645 			case SUBSCRIBE:
2646 			case QUERY:
2647 			case NOTIFICATIONS:
2648 			case CHECKPOINT:
2649 			case SEQUENCE:
2650 			case ABORT_AFTER_WAIT:
2651 			case ALLOW_PAGE_LOCKS:
2652 			case ALLOW_ROW_LOCKS:
2653 			case ALL_SPARSE_COLUMNS:
2654 			case BUCKET_COUNT:
2655 			case COLUMNSTORE_ARCHIVE:
2656 			case COLUMN_ENCRYPTION_KEY:
2657 			case COLUMN_SET:
2658 			case COMPRESSION_DELAY:
2659 			case DATABASE_DEAULT:
2660 			case DATA_COMPRESSION:
2661 			case DATA_CONSISTENCY_CHECK:
2662 			case ENCRYPTION_TYPE:
2663 			case SYSTEM_TIME:
2664 			case SYSTEM_VERSIONING:
2665 			case TEXTIMAGE_ON:
2666 			case WAIT_AT_LOW_PRIORITY:
2667 			case STATISTICS_INCREMENTAL:
2668 			case STATISTICS_NORECOMPUTE:
2669 			case ROUND_ROBIN:
2670 			case SCHEMA_AND_DATA:
2671 			case SCHEMA_ONLY:
2672 			case SORT_IN_TEMPDB:
2673 			case IGNORE_DUP_KEY:
2674 			case IMPLICIT_TRANSACTIONS:
2675 			case MAX_DURATION:
2676 			case MEMORY_OPTIMIZED:
2677 			case MIGRATION_STATE:
2678 			case PAD_INDEX:
2679 			case REMOTE_DATA_ARCHIVE:
2680 			case FILESTREAM_ON:
2681 			case FILETABLE_COLLATE_FILENAME:
2682 			case FILETABLE_DIRECTORY:
2683 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
2684 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
2685 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
2686 			case FILTER_PREDICATE:
2687 			case HISTORY_RETENTION_PERIOD:
2688 			case HISTORY_TABLE:
2689 			case LOCK_ESCALATION:
2690 			case DROP_EXISTING:
2691 			case ROW_NUMBER:
2692 			case FIRST:
2693 			case DATETIME2:
2694 			case OUTPUT:
2695 			case INSERTED:
2696 			case DELETED:
2697 			case FILENAME:
2698 			case MAXSIZE:
2699 			case FILEGROWTH:
2700 			case UNLIMITED:
2701 			case KB:
2702 			case MB:
2703 			case GB:
2704 			case TB:
2705 			case MEMORY_OPTIMIZED_DATA:
2706 			case FILEGROUP:
2707 			case NON_TRANSACTED_ACCESS:
2708 			case DB_CHAINING:
2709 			case TRUSTWORTHY:
2710 			case FORWARD_ONLY:
2711 			case KEYSET:
2712 			case FAST_FORWARD:
2713 			case SCROLL_LOCKS:
2714 			case OPTIMISTIC:
2715 			case TYPE_WARNING:
2716 			case SCHEMABINDING:
2717 			case CALLER:
2718 			case OWNER:
2719 			case SNAPSHOT:
2720 			case REPEATABLE:
2721 			case SERIALIZABLE:
2722 			case NATIVE_COMPILATION:
2723 			case VIEW_METADATA:
2724 			case INSTEAD:
2725 			case APPEND:
2726 			case INCREMENT:
2727 			case CACHE:
2728 			case MINVALUE:
2729 			case MAXVALUE:
2730 			case RESTART:
2731 			case LOB_COMPACTION:
2732 			case COMPRESS_ALL_ROW_GROUPS:
2733 			case REORGANIZE:
2734 			case RESUME:
2735 			case PAUSE:
2736 			case ABORT:
2737 			case ACCELERATED_DATABASE_RECOVERY:
2738 			case PERSISTENT_VERSION_STORE_FILEGROUP:
2739 			case IMMEDIATE:
2740 			case NO_WAIT:
2741 			case TARGET_RECOVERY_TIME:
2742 			case SECONDS:
2743 			case HONOR_BROKER_PRIORITY:
2744 			case ERROR_BROKER_CONVERSATIONS:
2745 			case NEW_BROKER:
2746 			case DISABLE_BROKER:
2747 			case ENABLE_BROKER:
2748 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
2749 			case READ_COMMITTED_SNAPSHOT:
2750 			case ALLOW_SNAPSHOT_ISOLATION:
2751 			case RECURSIVE_TRIGGERS:
2752 			case QUOTED_IDENTIFIER:
2753 			case NUMERIC_ROUNDABORT:
2754 			case CONCAT_NULL_YIELDS_NULL:
2755 			case COMPATIBILITY_LEVEL:
2756 			case ARITHABORT:
2757 			case ANSI_WARNINGS:
2758 			case ANSI_PADDING:
2759 			case ANSI_NULLS:
2760 			case ANSI_NULL_DEFAULT:
2761 			case PAGE_VERIFY:
2762 			case CHECKSUM:
2763 			case TORN_PAGE_DETECTION:
2764 			case BULK_LOGGED:
2765 			case RECOVERY:
2766 			case TOTAL_EXECUTION_CPU_TIME_MS:
2767 			case TOTAL_COMPILE_CPU_TIME_MS:
2768 			case STALE_CAPTURE_POLICY_THRESHOLD:
2769 			case EXECUTION_COUNT:
2770 			case QUERY_CAPTURE_POLICY:
2771 			case WAIT_STATS_CAPTURE_MODE:
2772 			case MAX_PLANS_PER_QUERY:
2773 			case QUERY_CAPTURE_MODE:
2774 			case SIZE_BASED_CLEANUP_MODE:
2775 			case INTERVAL_LENGTH_MINUTES:
2776 			case MAX_STORAGE_SIZE_MB:
2777 			case DATA_FLUSH_INTERVAL_SECONDS:
2778 			case CLEANUP_POLICY:
2779 			case CUSTOM:
2780 			case STALE_QUERY_THRESHOLD_DAYS:
2781 			case OPERATION_MODE:
2782 			case QUERY_STORE:
2783 			case CURSOR_DEFAULT:
2784 			case GLOBAL:
2785 			case CURSOR_CLOSE_ON_COMMIT:
2786 			case HOURS:
2787 			case CHANGE_RETENTION:
2788 			case AUTO_CLEANUP:
2789 			case CHANGE_TRACKING:
2790 			case AUTOMATIC_TUNING:
2791 			case FORCE_LAST_GOOD_PLAN:
2792 			case AUTO_UPDATE_STATISTICS_ASYNC:
2793 			case AUTO_UPDATE_STATISTICS:
2794 			case AUTO_SHRINK:
2795 			case AUTO_CREATE_STATISTICS:
2796 			case INCREMENTAL:
2797 			case AUTO_CLOSE:
2798 			case DATA_RETENTION:
2799 			case TEMPORAL_HISTORY_RETENTION:
2800 			case EDITION:
2801 			case MIXED_PAGE_ALLOCATION:
2802 			case DISABLED:
2803 			case ALLOWED:
2804 			case HADR:
2805 			case MULTI_USER:
2806 			case RESTRICTED_USER:
2807 			case SINGLE_USER:
2808 			case OFFLINE:
2809 			case EMERGENCY:
2810 			case SUSPEND:
2811 			case DATE_CORRELATION_OPTIMIZATION:
2812 			case ELASTIC_POOL:
2813 			case SERVICE_OBJECTIVE:
2814 			case DATABASE_NAME:
2815 			case ALLOW_CONNECTIONS:
2816 			case GEO:
2817 			case NAMED:
2818 			case DATEFIRST:
2819 			case BACKUP_STORAGE_REDUNDANCY:
2820 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
2821 			case SECONDARY:
2822 			case FAILOVER:
2823 			case DEFAULT_FULLTEXT_LANGUAGE:
2824 			case DEFAULT_LANGUAGE:
2825 			case INLINE:
2826 			case NESTED_TRIGGERS:
2827 			case TRANSFORM_NOISE_WORDS:
2828 			case TWO_DIGIT_YEAR_CUTOFF:
2829 			case PERSISTENT_LOG_BUFFER:
2830 			case DIRECTORY_NAME:
2831 			case DATEFORMAT:
2832 			case DELAYED_DURABILITY:
2833 			case AUTHORIZATION:
2834 			case TRANSFER:
2835 			case SEARCH:
2836 			case MEMBER:
2837 			case IDENTIFIER_:
2838 				enterOuterAlt(_localctx, 1);
2839 				{
2840 				setState(1137);
2841 				regularIdentifier();
2842 				}
2843 				break;
2844 			case DELIMITED_IDENTIFIER_:
2845 				enterOuterAlt(_localctx, 2);
2846 				{
2847 				setState(1138);
2848 				delimitedIdentifier();
2849 				}
2850 				break;
2851 			default:
2852 				throw new NoViableAltException(this);
2853 			}
2854 		}
2855 		catch (RecognitionException re) {
2856 			_localctx.exception = re;
2857 			_errHandler.reportError(this, re);
2858 			_errHandler.recover(this, re);
2859 		}
2860 		finally {
2861 			exitRule();
2862 		}
2863 		return _localctx;
2864 	}
2865 
2866 	public static class RegularIdentifierContext extends ParserRuleContext {
2867 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
2868 		public UnreservedWordContext unreservedWord() {
2869 			return getRuleContext(UnreservedWordContext.class,0);
2870 		}
2871 		public RegularIdentifierContext(ParserRuleContext parent, int invokingState) {
2872 			super(parent, invokingState);
2873 		}
2874 		@Override public int getRuleIndex() { return RULE_regularIdentifier; }
2875 		@Override
2876 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2877 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularIdentifier(this);
2878 			else return visitor.visitChildren(this);
2879 		}
2880 	}
2881 
2882 	public final RegularIdentifierContext regularIdentifier() throws RecognitionException {
2883 		RegularIdentifierContext _localctx = new RegularIdentifierContext(_ctx, getState());
2884 		enterRule(_localctx, 44, RULE_regularIdentifier);
2885 		try {
2886 			setState(1143);
2887 			_errHandler.sync(this);
2888 			switch (_input.LA(1)) {
2889 			case IDENTIFIER_:
2890 				enterOuterAlt(_localctx, 1);
2891 				{
2892 				setState(1141);
2893 				match(IDENTIFIER_);
2894 				}
2895 				break;
2896 			case TRUNCATE:
2897 			case SCHEMA:
2898 			case FUNCTION:
2899 			case TRIGGER:
2900 			case CAST:
2901 			case GROUP:
2902 			case LIMIT:
2903 			case OFFSET:
2904 			case SAVEPOINT:
2905 			case BOOLEAN:
2906 			case ARRAY:
2907 			case DATE:
2908 			case LOCALTIME:
2909 			case LOCALTIMESTAMP:
2910 			case QUARTER:
2911 			case WEEK:
2912 			case DAY:
2913 			case MICROSECOND:
2914 			case MAX:
2915 			case MIN:
2916 			case SUM:
2917 			case COUNT:
2918 			case AVG:
2919 			case ENABLE:
2920 			case DISABLE:
2921 			case INSTANCE:
2922 			case DO:
2923 			case DEFINER:
2924 			case SQL:
2925 			case CASCADED:
2926 			case LOCAL:
2927 			case NEXT:
2928 			case NAME:
2929 			case INTEGER:
2930 			case TYPE:
2931 			case READ_ONLY:
2932 			case DATABASE:
2933 			case DATEPART:
2934 			case PASSWORD:
2935 			case BINARY:
2936 			case HIDDEN_:
2937 			case MOD:
2938 			case PARTITION:
2939 			case PARTITIONS:
2940 			case TOP:
2941 			case ROW:
2942 			case ROWS:
2943 			case XOR:
2944 			case ALWAYS:
2945 			case ROLE:
2946 			case START:
2947 			case ALGORITHM:
2948 			case AUTO:
2949 			case BLOCKERS:
2950 			case CLUSTERED:
2951 			case NONCLUSTERED:
2952 			case COLUMNSTORE:
2953 			case CONTENT:
2954 			case YEARS:
2955 			case MONTHS:
2956 			case WEEKS:
2957 			case DAYS:
2958 			case MINUTES:
2959 			case DENY:
2960 			case DETERMINISTIC:
2961 			case DISTRIBUTION:
2962 			case DOCUMENT:
2963 			case DURABILITY:
2964 			case ENCRYPTED:
2965 			case FILESTREAM:
2966 			case FILETABLE:
2967 			case FILLFACTOR:
2968 			case FOLLOWING:
2969 			case HASH:
2970 			case HEAP:
2971 			case INBOUND:
2972 			case OUTBOUND:
2973 			case UNBOUNDED:
2974 			case INFINITE:
2975 			case LOGIN:
2976 			case MASKED:
2977 			case MAXDOP:
2978 			case MOVE:
2979 			case NOCHECK:
2980 			case OBJECT:
2981 			case OFF:
2982 			case ONLINE:
2983 			case OVER:
2984 			case PAGE:
2985 			case PAUSED:
2986 			case PERIOD:
2987 			case PERSISTED:
2988 			case PRECEDING:
2989 			case RANDOMIZED:
2990 			case RANGE:
2991 			case REBUILD:
2992 			case REPLICATE:
2993 			case REPLICATION:
2994 			case RESUMABLE:
2995 			case ROWGUIDCOL:
2996 			case SAVE:
2997 			case SELF:
2998 			case SPARSE:
2999 			case SWITCH:
3000 			case TRAN:
3001 			case TRANCOUNT:
3002 			case CONTROL:
3003 			case CONCAT:
3004 			case TAKE:
3005 			case OWNERSHIP:
3006 			case DEFINITION:
3007 			case APPLICATION:
3008 			case ASSEMBLY:
3009 			case SYMMETRIC:
3010 			case ASYMMETRIC:
3011 			case SERVER:
3012 			case RECEIVE:
3013 			case CHANGE:
3014 			case TRACE:
3015 			case TRACKING:
3016 			case RESOURCES:
3017 			case SETTINGS:
3018 			case STATE:
3019 			case AVAILABILITY:
3020 			case CREDENTIAL:
3021 			case ENDPOINT:
3022 			case EVENT:
3023 			case NOTIFICATION:
3024 			case LINKED:
3025 			case AUDIT:
3026 			case DDL:
3027 			case XML:
3028 			case IMPERSONATE:
3029 			case SECURABLES:
3030 			case AUTHENTICATE:
3031 			case EXTERNAL:
3032 			case ACCESS:
3033 			case ADMINISTER:
3034 			case BULK:
3035 			case OPERATIONS:
3036 			case UNSAFE:
3037 			case SHUTDOWN:
3038 			case SCOPED:
3039 			case CONFIGURATION:
3040 			case DATASPACE:
3041 			case SERVICE:
3042 			case CERTIFICATE:
3043 			case CONTRACT:
3044 			case ENCRYPTION:
3045 			case MASTER:
3046 			case DATA:
3047 			case SOURCE:
3048 			case FILE:
3049 			case FORMAT:
3050 			case LIBRARY:
3051 			case FULLTEXT:
3052 			case MASK:
3053 			case UNMASK:
3054 			case MESSAGE:
3055 			case REMOTE:
3056 			case BINDING:
3057 			case ROUTE:
3058 			case SECURITY:
3059 			case POLICY:
3060 			case AGGREGATE:
3061 			case QUEUE:
3062 			case RULE:
3063 			case SYNONYM:
3064 			case COLLECTION:
3065 			case SCRIPT:
3066 			case KILL:
3067 			case BACKUP:
3068 			case LOG:
3069 			case SHOWPLAN:
3070 			case SUBSCRIBE:
3071 			case QUERY:
3072 			case NOTIFICATIONS:
3073 			case CHECKPOINT:
3074 			case SEQUENCE:
3075 			case ABORT_AFTER_WAIT:
3076 			case ALLOW_PAGE_LOCKS:
3077 			case ALLOW_ROW_LOCKS:
3078 			case ALL_SPARSE_COLUMNS:
3079 			case BUCKET_COUNT:
3080 			case COLUMNSTORE_ARCHIVE:
3081 			case COLUMN_ENCRYPTION_KEY:
3082 			case COLUMN_SET:
3083 			case COMPRESSION_DELAY:
3084 			case DATABASE_DEAULT:
3085 			case DATA_COMPRESSION:
3086 			case DATA_CONSISTENCY_CHECK:
3087 			case ENCRYPTION_TYPE:
3088 			case SYSTEM_TIME:
3089 			case SYSTEM_VERSIONING:
3090 			case TEXTIMAGE_ON:
3091 			case WAIT_AT_LOW_PRIORITY:
3092 			case STATISTICS_INCREMENTAL:
3093 			case STATISTICS_NORECOMPUTE:
3094 			case ROUND_ROBIN:
3095 			case SCHEMA_AND_DATA:
3096 			case SCHEMA_ONLY:
3097 			case SORT_IN_TEMPDB:
3098 			case IGNORE_DUP_KEY:
3099 			case IMPLICIT_TRANSACTIONS:
3100 			case MAX_DURATION:
3101 			case MEMORY_OPTIMIZED:
3102 			case MIGRATION_STATE:
3103 			case PAD_INDEX:
3104 			case REMOTE_DATA_ARCHIVE:
3105 			case FILESTREAM_ON:
3106 			case FILETABLE_COLLATE_FILENAME:
3107 			case FILETABLE_DIRECTORY:
3108 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
3109 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
3110 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
3111 			case FILTER_PREDICATE:
3112 			case HISTORY_RETENTION_PERIOD:
3113 			case HISTORY_TABLE:
3114 			case LOCK_ESCALATION:
3115 			case DROP_EXISTING:
3116 			case ROW_NUMBER:
3117 			case FIRST:
3118 			case DATETIME2:
3119 			case OUTPUT:
3120 			case INSERTED:
3121 			case DELETED:
3122 			case FILENAME:
3123 			case MAXSIZE:
3124 			case FILEGROWTH:
3125 			case UNLIMITED:
3126 			case KB:
3127 			case MB:
3128 			case GB:
3129 			case TB:
3130 			case MEMORY_OPTIMIZED_DATA:
3131 			case FILEGROUP:
3132 			case NON_TRANSACTED_ACCESS:
3133 			case DB_CHAINING:
3134 			case TRUSTWORTHY:
3135 			case FORWARD_ONLY:
3136 			case KEYSET:
3137 			case FAST_FORWARD:
3138 			case SCROLL_LOCKS:
3139 			case OPTIMISTIC:
3140 			case TYPE_WARNING:
3141 			case SCHEMABINDING:
3142 			case CALLER:
3143 			case OWNER:
3144 			case SNAPSHOT:
3145 			case REPEATABLE:
3146 			case SERIALIZABLE:
3147 			case NATIVE_COMPILATION:
3148 			case VIEW_METADATA:
3149 			case INSTEAD:
3150 			case APPEND:
3151 			case INCREMENT:
3152 			case CACHE:
3153 			case MINVALUE:
3154 			case MAXVALUE:
3155 			case RESTART:
3156 			case LOB_COMPACTION:
3157 			case COMPRESS_ALL_ROW_GROUPS:
3158 			case REORGANIZE:
3159 			case RESUME:
3160 			case PAUSE:
3161 			case ABORT:
3162 			case ACCELERATED_DATABASE_RECOVERY:
3163 			case PERSISTENT_VERSION_STORE_FILEGROUP:
3164 			case IMMEDIATE:
3165 			case NO_WAIT:
3166 			case TARGET_RECOVERY_TIME:
3167 			case SECONDS:
3168 			case HONOR_BROKER_PRIORITY:
3169 			case ERROR_BROKER_CONVERSATIONS:
3170 			case NEW_BROKER:
3171 			case DISABLE_BROKER:
3172 			case ENABLE_BROKER:
3173 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
3174 			case READ_COMMITTED_SNAPSHOT:
3175 			case ALLOW_SNAPSHOT_ISOLATION:
3176 			case RECURSIVE_TRIGGERS:
3177 			case QUOTED_IDENTIFIER:
3178 			case NUMERIC_ROUNDABORT:
3179 			case CONCAT_NULL_YIELDS_NULL:
3180 			case COMPATIBILITY_LEVEL:
3181 			case ARITHABORT:
3182 			case ANSI_WARNINGS:
3183 			case ANSI_PADDING:
3184 			case ANSI_NULLS:
3185 			case ANSI_NULL_DEFAULT:
3186 			case PAGE_VERIFY:
3187 			case CHECKSUM:
3188 			case TORN_PAGE_DETECTION:
3189 			case BULK_LOGGED:
3190 			case RECOVERY:
3191 			case TOTAL_EXECUTION_CPU_TIME_MS:
3192 			case TOTAL_COMPILE_CPU_TIME_MS:
3193 			case STALE_CAPTURE_POLICY_THRESHOLD:
3194 			case EXECUTION_COUNT:
3195 			case QUERY_CAPTURE_POLICY:
3196 			case WAIT_STATS_CAPTURE_MODE:
3197 			case MAX_PLANS_PER_QUERY:
3198 			case QUERY_CAPTURE_MODE:
3199 			case SIZE_BASED_CLEANUP_MODE:
3200 			case INTERVAL_LENGTH_MINUTES:
3201 			case MAX_STORAGE_SIZE_MB:
3202 			case DATA_FLUSH_INTERVAL_SECONDS:
3203 			case CLEANUP_POLICY:
3204 			case CUSTOM:
3205 			case STALE_QUERY_THRESHOLD_DAYS:
3206 			case OPERATION_MODE:
3207 			case QUERY_STORE:
3208 			case CURSOR_DEFAULT:
3209 			case GLOBAL:
3210 			case CURSOR_CLOSE_ON_COMMIT:
3211 			case HOURS:
3212 			case CHANGE_RETENTION:
3213 			case AUTO_CLEANUP:
3214 			case CHANGE_TRACKING:
3215 			case AUTOMATIC_TUNING:
3216 			case FORCE_LAST_GOOD_PLAN:
3217 			case AUTO_UPDATE_STATISTICS_ASYNC:
3218 			case AUTO_UPDATE_STATISTICS:
3219 			case AUTO_SHRINK:
3220 			case AUTO_CREATE_STATISTICS:
3221 			case INCREMENTAL:
3222 			case AUTO_CLOSE:
3223 			case DATA_RETENTION:
3224 			case TEMPORAL_HISTORY_RETENTION:
3225 			case EDITION:
3226 			case MIXED_PAGE_ALLOCATION:
3227 			case DISABLED:
3228 			case ALLOWED:
3229 			case HADR:
3230 			case MULTI_USER:
3231 			case RESTRICTED_USER:
3232 			case SINGLE_USER:
3233 			case OFFLINE:
3234 			case EMERGENCY:
3235 			case SUSPEND:
3236 			case DATE_CORRELATION_OPTIMIZATION:
3237 			case ELASTIC_POOL:
3238 			case SERVICE_OBJECTIVE:
3239 			case DATABASE_NAME:
3240 			case ALLOW_CONNECTIONS:
3241 			case GEO:
3242 			case NAMED:
3243 			case DATEFIRST:
3244 			case BACKUP_STORAGE_REDUNDANCY:
3245 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
3246 			case SECONDARY:
3247 			case FAILOVER:
3248 			case DEFAULT_FULLTEXT_LANGUAGE:
3249 			case DEFAULT_LANGUAGE:
3250 			case INLINE:
3251 			case NESTED_TRIGGERS:
3252 			case TRANSFORM_NOISE_WORDS:
3253 			case TWO_DIGIT_YEAR_CUTOFF:
3254 			case PERSISTENT_LOG_BUFFER:
3255 			case DIRECTORY_NAME:
3256 			case DATEFORMAT:
3257 			case DELAYED_DURABILITY:
3258 			case AUTHORIZATION:
3259 			case TRANSFER:
3260 			case SEARCH:
3261 			case MEMBER:
3262 				enterOuterAlt(_localctx, 2);
3263 				{
3264 				setState(1142);
3265 				unreservedWord();
3266 				}
3267 				break;
3268 			default:
3269 				throw new NoViableAltException(this);
3270 			}
3271 		}
3272 		catch (RecognitionException re) {
3273 			_localctx.exception = re;
3274 			_errHandler.reportError(this, re);
3275 			_errHandler.recover(this, re);
3276 		}
3277 		finally {
3278 			exitRule();
3279 		}
3280 		return _localctx;
3281 	}
3282 
3283 	public static class DelimitedIdentifierContext extends ParserRuleContext {
3284 		public TerminalNode DELIMITED_IDENTIFIER_() { return getToken(SQLServerStatementParser.DELIMITED_IDENTIFIER_, 0); }
3285 		public DelimitedIdentifierContext(ParserRuleContext parent, int invokingState) {
3286 			super(parent, invokingState);
3287 		}
3288 		@Override public int getRuleIndex() { return RULE_delimitedIdentifier; }
3289 		@Override
3290 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3291 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDelimitedIdentifier(this);
3292 			else return visitor.visitChildren(this);
3293 		}
3294 	}
3295 
3296 	public final DelimitedIdentifierContext delimitedIdentifier() throws RecognitionException {
3297 		DelimitedIdentifierContext _localctx = new DelimitedIdentifierContext(_ctx, getState());
3298 		enterRule(_localctx, 46, RULE_delimitedIdentifier);
3299 		try {
3300 			enterOuterAlt(_localctx, 1);
3301 			{
3302 			setState(1145);
3303 			match(DELIMITED_IDENTIFIER_);
3304 			}
3305 		}
3306 		catch (RecognitionException re) {
3307 			_localctx.exception = re;
3308 			_errHandler.reportError(this, re);
3309 			_errHandler.recover(this, re);
3310 		}
3311 		finally {
3312 			exitRule();
3313 		}
3314 		return _localctx;
3315 	}
3316 
3317 	public static class UnreservedWordContext extends ParserRuleContext {
3318 		public TerminalNode TRUNCATE() { return getToken(SQLServerStatementParser.TRUNCATE, 0); }
3319 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
3320 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
3321 		public TerminalNode LIMIT() { return getToken(SQLServerStatementParser.LIMIT, 0); }
3322 		public TerminalNode OFFSET() { return getToken(SQLServerStatementParser.OFFSET, 0); }
3323 		public TerminalNode SAVEPOINT() { return getToken(SQLServerStatementParser.SAVEPOINT, 0); }
3324 		public TerminalNode BOOLEAN() { return getToken(SQLServerStatementParser.BOOLEAN, 0); }
3325 		public TerminalNode ARRAY() { return getToken(SQLServerStatementParser.ARRAY, 0); }
3326 		public TerminalNode LOCALTIME() { return getToken(SQLServerStatementParser.LOCALTIME, 0); }
3327 		public TerminalNode LOCALTIMESTAMP() { return getToken(SQLServerStatementParser.LOCALTIMESTAMP, 0); }
3328 		public TerminalNode QUARTER() { return getToken(SQLServerStatementParser.QUARTER, 0); }
3329 		public TerminalNode WEEK() { return getToken(SQLServerStatementParser.WEEK, 0); }
3330 		public TerminalNode MICROSECOND() { return getToken(SQLServerStatementParser.MICROSECOND, 0); }
3331 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
3332 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
3333 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
3334 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
3335 		public TerminalNode MOD() { return getToken(SQLServerStatementParser.MOD, 0); }
3336 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
3337 		public TerminalNode TOP() { return getToken(SQLServerStatementParser.TOP, 0); }
3338 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
3339 		public TerminalNode XOR() { return getToken(SQLServerStatementParser.XOR, 0); }
3340 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
3341 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
3342 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
3343 		public TerminalNode ALGORITHM() { return getToken(SQLServerStatementParser.ALGORITHM, 0); }
3344 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
3345 		public TerminalNode BLOCKERS() { return getToken(SQLServerStatementParser.BLOCKERS, 0); }
3346 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
3347 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
3348 		public TerminalNode CONTENT() { return getToken(SQLServerStatementParser.CONTENT, 0); }
3349 		public TerminalNode CONCAT() { return getToken(SQLServerStatementParser.CONCAT, 0); }
3350 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
3351 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
3352 		public TerminalNode DENY() { return getToken(SQLServerStatementParser.DENY, 0); }
3353 		public TerminalNode DETERMINISTIC() { return getToken(SQLServerStatementParser.DETERMINISTIC, 0); }
3354 		public TerminalNode DISTRIBUTION() { return getToken(SQLServerStatementParser.DISTRIBUTION, 0); }
3355 		public TerminalNode DOCUMENT() { return getToken(SQLServerStatementParser.DOCUMENT, 0); }
3356 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
3357 		public TerminalNode ENCRYPTED() { return getToken(SQLServerStatementParser.ENCRYPTED, 0); }
3358 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
3359 		public TerminalNode FILETABLE() { return getToken(SQLServerStatementParser.FILETABLE, 0); }
3360 		public TerminalNode FOLLOWING() { return getToken(SQLServerStatementParser.FOLLOWING, 0); }
3361 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
3362 		public TerminalNode HEAP() { return getToken(SQLServerStatementParser.HEAP, 0); }
3363 		public TerminalNode INBOUND() { return getToken(SQLServerStatementParser.INBOUND, 0); }
3364 		public TerminalNode INFINITE() { return getToken(SQLServerStatementParser.INFINITE, 0); }
3365 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
3366 		public TerminalNode MASKED() { return getToken(SQLServerStatementParser.MASKED, 0); }
3367 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
3368 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
3369 		public TerminalNode MONTHS() { return getToken(SQLServerStatementParser.MONTHS, 0); }
3370 		public TerminalNode MOVE() { return getToken(SQLServerStatementParser.MOVE, 0); }
3371 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
3372 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
3373 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
3374 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
3375 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
3376 		public TerminalNode OUTBOUND() { return getToken(SQLServerStatementParser.OUTBOUND, 0); }
3377 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
3378 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
3379 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
3380 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
3381 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
3382 		public TerminalNode PERSISTED() { return getToken(SQLServerStatementParser.PERSISTED, 0); }
3383 		public TerminalNode PRECEDING() { return getToken(SQLServerStatementParser.PRECEDING, 0); }
3384 		public TerminalNode RANDOMIZED() { return getToken(SQLServerStatementParser.RANDOMIZED, 0); }
3385 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
3386 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
3387 		public TerminalNode REPLICATE() { return getToken(SQLServerStatementParser.REPLICATE, 0); }
3388 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
3389 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
3390 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
3391 		public TerminalNode SAVE() { return getToken(SQLServerStatementParser.SAVE, 0); }
3392 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
3393 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
3394 		public TerminalNode SWITCH() { return getToken(SQLServerStatementParser.SWITCH, 0); }
3395 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
3396 		public TerminalNode TRANCOUNT() { return getToken(SQLServerStatementParser.TRANCOUNT, 0); }
3397 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
3398 		public TerminalNode YEARS() { return getToken(SQLServerStatementParser.YEARS, 0); }
3399 		public TerminalNode WEEKS() { return getToken(SQLServerStatementParser.WEEKS, 0); }
3400 		public TerminalNode ABORT_AFTER_WAIT() { return getToken(SQLServerStatementParser.ABORT_AFTER_WAIT, 0); }
3401 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
3402 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
3403 		public TerminalNode ALL_SPARSE_COLUMNS() { return getToken(SQLServerStatementParser.ALL_SPARSE_COLUMNS, 0); }
3404 		public TerminalNode BUCKET_COUNT() { return getToken(SQLServerStatementParser.BUCKET_COUNT, 0); }
3405 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
3406 		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(SQLServerStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
3407 		public TerminalNode COLUMN_SET() { return getToken(SQLServerStatementParser.COLUMN_SET, 0); }
3408 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
3409 		public TerminalNode DATABASE_DEAULT() { return getToken(SQLServerStatementParser.DATABASE_DEAULT, 0); }
3410 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
3411 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
3412 		public TerminalNode ENCRYPTION_TYPE() { return getToken(SQLServerStatementParser.ENCRYPTION_TYPE, 0); }
3413 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
3414 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
3415 		public TerminalNode TEXTIMAGE_ON() { return getToken(SQLServerStatementParser.TEXTIMAGE_ON, 0); }
3416 		public TerminalNode WAIT_AT_LOW_PRIORITY() { return getToken(SQLServerStatementParser.WAIT_AT_LOW_PRIORITY, 0); }
3417 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
3418 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
3419 		public TerminalNode ROUND_ROBIN() { return getToken(SQLServerStatementParser.ROUND_ROBIN, 0); }
3420 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
3421 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
3422 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
3423 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
3424 		public TerminalNode IMPLICIT_TRANSACTIONS() { return getToken(SQLServerStatementParser.IMPLICIT_TRANSACTIONS, 0); }
3425 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
3426 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
3427 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
3428 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
3429 		public TerminalNode REMOTE_DATA_ARCHIVE() { return getToken(SQLServerStatementParser.REMOTE_DATA_ARCHIVE, 0); }
3430 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
3431 		public TerminalNode FILETABLE_COLLATE_FILENAME() { return getToken(SQLServerStatementParser.FILETABLE_COLLATE_FILENAME, 0); }
3432 		public TerminalNode FILETABLE_DIRECTORY() { return getToken(SQLServerStatementParser.FILETABLE_DIRECTORY, 0); }
3433 		public TerminalNode FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME, 0); }
3434 		public TerminalNode FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME, 0); }
3435 		public TerminalNode FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME, 0); }
3436 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
3437 		public TerminalNode FILTER_PREDICATE() { return getToken(SQLServerStatementParser.FILTER_PREDICATE, 0); }
3438 		public TerminalNode HISTORY_RETENTION_PERIOD() { return getToken(SQLServerStatementParser.HISTORY_RETENTION_PERIOD, 0); }
3439 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
3440 		public TerminalNode LOCK_ESCALATION() { return getToken(SQLServerStatementParser.LOCK_ESCALATION, 0); }
3441 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
3442 		public TerminalNode ROW_NUMBER() { return getToken(SQLServerStatementParser.ROW_NUMBER, 0); }
3443 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
3444 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
3445 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
3446 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
3447 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
3448 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
3449 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
3450 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
3451 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
3452 		public TerminalNode RECEIVE() { return getToken(SQLServerStatementParser.RECEIVE, 0); }
3453 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
3454 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
3455 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
3456 		public TerminalNode RESOURCES() { return getToken(SQLServerStatementParser.RESOURCES, 0); }
3457 		public TerminalNode SETTINGS() { return getToken(SQLServerStatementParser.SETTINGS, 0); }
3458 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
3459 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
3460 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
3461 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
3462 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
3463 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
3464 		public TerminalNode LINKED() { return getToken(SQLServerStatementParser.LINKED, 0); }
3465 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
3466 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
3467 		public TerminalNode SQL() { return getToken(SQLServerStatementParser.SQL, 0); }
3468 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
3469 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
3470 		public TerminalNode SECURABLES() { return getToken(SQLServerStatementParser.SECURABLES, 0); }
3471 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
3472 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
3473 		public TerminalNode ACCESS() { return getToken(SQLServerStatementParser.ACCESS, 0); }
3474 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
3475 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
3476 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
3477 		public TerminalNode UNSAFE() { return getToken(SQLServerStatementParser.UNSAFE, 0); }
3478 		public TerminalNode SHUTDOWN() { return getToken(SQLServerStatementParser.SHUTDOWN, 0); }
3479 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
3480 		public TerminalNode CONFIGURATION() { return getToken(SQLServerStatementParser.CONFIGURATION, 0); }
3481 		public TerminalNode DATASPACE() { return getToken(SQLServerStatementParser.DATASPACE, 0); }
3482 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
3483 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
3484 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
3485 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
3486 		public TerminalNode MASTER() { return getToken(SQLServerStatementParser.MASTER, 0); }
3487 		public TerminalNode DATA() { return getToken(SQLServerStatementParser.DATA, 0); }
3488 		public TerminalNode SOURCE() { return getToken(SQLServerStatementParser.SOURCE, 0); }
3489 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
3490 		public TerminalNode FORMAT() { return getToken(SQLServerStatementParser.FORMAT, 0); }
3491 		public TerminalNode LIBRARY() { return getToken(SQLServerStatementParser.LIBRARY, 0); }
3492 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
3493 		public TerminalNode MASK() { return getToken(SQLServerStatementParser.MASK, 0); }
3494 		public TerminalNode UNMASK() { return getToken(SQLServerStatementParser.UNMASK, 0); }
3495 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
3496 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
3497 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
3498 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
3499 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
3500 		public TerminalNode SECURITY() { return getToken(SQLServerStatementParser.SECURITY, 0); }
3501 		public TerminalNode POLICY() { return getToken(SQLServerStatementParser.POLICY, 0); }
3502 		public TerminalNode AGGREGATE() { return getToken(SQLServerStatementParser.AGGREGATE, 0); }
3503 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
3504 		public TerminalNode RULE() { return getToken(SQLServerStatementParser.RULE, 0); }
3505 		public TerminalNode SYNONYM() { return getToken(SQLServerStatementParser.SYNONYM, 0); }
3506 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
3507 		public TerminalNode SCRIPT() { return getToken(SQLServerStatementParser.SCRIPT, 0); }
3508 		public TerminalNode KILL() { return getToken(SQLServerStatementParser.KILL, 0); }
3509 		public TerminalNode BACKUP() { return getToken(SQLServerStatementParser.BACKUP, 0); }
3510 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
3511 		public TerminalNode SHOWPLAN() { return getToken(SQLServerStatementParser.SHOWPLAN, 0); }
3512 		public TerminalNode SUBSCRIBE() { return getToken(SQLServerStatementParser.SUBSCRIBE, 0); }
3513 		public TerminalNode QUERY() { return getToken(SQLServerStatementParser.QUERY, 0); }
3514 		public TerminalNode NOTIFICATIONS() { return getToken(SQLServerStatementParser.NOTIFICATIONS, 0); }
3515 		public TerminalNode CHECKPOINT() { return getToken(SQLServerStatementParser.CHECKPOINT, 0); }
3516 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
3517 		public TerminalNode INSTANCE() { return getToken(SQLServerStatementParser.INSTANCE, 0); }
3518 		public TerminalNode DO() { return getToken(SQLServerStatementParser.DO, 0); }
3519 		public TerminalNode DEFINER() { return getToken(SQLServerStatementParser.DEFINER, 0); }
3520 		public TerminalNode LOCAL() { return getToken(SQLServerStatementParser.LOCAL, 0); }
3521 		public TerminalNode CASCADED() { return getToken(SQLServerStatementParser.CASCADED, 0); }
3522 		public TerminalNode NEXT() { return getToken(SQLServerStatementParser.NEXT, 0); }
3523 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
3524 		public TerminalNode INTEGER() { return getToken(SQLServerStatementParser.INTEGER, 0); }
3525 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
3526 		public TerminalNode MIN() { return getToken(SQLServerStatementParser.MIN, 0); }
3527 		public TerminalNode SUM() { return getToken(SQLServerStatementParser.SUM, 0); }
3528 		public TerminalNode COUNT() { return getToken(SQLServerStatementParser.COUNT, 0); }
3529 		public TerminalNode AVG() { return getToken(SQLServerStatementParser.AVG, 0); }
3530 		public TerminalNode FIRST() { return getToken(SQLServerStatementParser.FIRST, 0); }
3531 		public TerminalNode DATETIME2() { return getToken(SQLServerStatementParser.DATETIME2, 0); }
3532 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
3533 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
3534 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
3535 		public TerminalNode KB() { return getToken(SQLServerStatementParser.KB, 0); }
3536 		public TerminalNode MB() { return getToken(SQLServerStatementParser.MB, 0); }
3537 		public TerminalNode GB() { return getToken(SQLServerStatementParser.GB, 0); }
3538 		public TerminalNode TB() { return getToken(SQLServerStatementParser.TB, 0); }
3539 		public TerminalNode FILENAME() { return getToken(SQLServerStatementParser.FILENAME, 0); }
3540 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
3541 		public TerminalNode FILEGROWTH() { return getToken(SQLServerStatementParser.FILEGROWTH, 0); }
3542 		public TerminalNode UNLIMITED() { return getToken(SQLServerStatementParser.UNLIMITED, 0); }
3543 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
3544 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
3545 		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(SQLServerStatementParser.NON_TRANSACTED_ACCESS, 0); }
3546 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
3547 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
3548 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
3549 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
3550 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
3551 		public TerminalNode DATEPART() { return getToken(SQLServerStatementParser.DATEPART, 0); }
3552 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
3553 		public TerminalNode DAY() { return getToken(SQLServerStatementParser.DAY, 0); }
3554 		public TerminalNode FORWARD_ONLY() { return getToken(SQLServerStatementParser.FORWARD_ONLY, 0); }
3555 		public TerminalNode KEYSET() { return getToken(SQLServerStatementParser.KEYSET, 0); }
3556 		public TerminalNode FAST_FORWARD() { return getToken(SQLServerStatementParser.FAST_FORWARD, 0); }
3557 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
3558 		public TerminalNode SCROLL_LOCKS() { return getToken(SQLServerStatementParser.SCROLL_LOCKS, 0); }
3559 		public TerminalNode OPTIMISTIC() { return getToken(SQLServerStatementParser.OPTIMISTIC, 0); }
3560 		public TerminalNode TYPE_WARNING() { return getToken(SQLServerStatementParser.TYPE_WARNING, 0); }
3561 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
3562 		public TerminalNode CALLER() { return getToken(SQLServerStatementParser.CALLER, 0); }
3563 		public TerminalNode OWNER() { return getToken(SQLServerStatementParser.OWNER, 0); }
3564 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
3565 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
3566 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
3567 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
3568 		public TerminalNode VIEW_METADATA() { return getToken(SQLServerStatementParser.VIEW_METADATA, 0); }
3569 		public TerminalNode INSTEAD() { return getToken(SQLServerStatementParser.INSTEAD, 0); }
3570 		public TerminalNode APPEND() { return getToken(SQLServerStatementParser.APPEND, 0); }
3571 		public TerminalNode INCREMENT() { return getToken(SQLServerStatementParser.INCREMENT, 0); }
3572 		public TerminalNode CACHE() { return getToken(SQLServerStatementParser.CACHE, 0); }
3573 		public TerminalNode MINVALUE() { return getToken(SQLServerStatementParser.MINVALUE, 0); }
3574 		public TerminalNode MAXVALUE() { return getToken(SQLServerStatementParser.MAXVALUE, 0); }
3575 		public TerminalNode RESTART() { return getToken(SQLServerStatementParser.RESTART, 0); }
3576 		public TerminalNode LOB_COMPACTION() { return getToken(SQLServerStatementParser.LOB_COMPACTION, 0); }
3577 		public TerminalNode COMPRESS_ALL_ROW_GROUPS() { return getToken(SQLServerStatementParser.COMPRESS_ALL_ROW_GROUPS, 0); }
3578 		public TerminalNode REORGANIZE() { return getToken(SQLServerStatementParser.REORGANIZE, 0); }
3579 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
3580 		public TerminalNode PAUSE() { return getToken(SQLServerStatementParser.PAUSE, 0); }
3581 		public TerminalNode ABORT() { return getToken(SQLServerStatementParser.ABORT, 0); }
3582 		public TerminalNode ACCELERATED_DATABASE_RECOVERY() { return getToken(SQLServerStatementParser.ACCELERATED_DATABASE_RECOVERY, 0); }
3583 		public TerminalNode PERSISTENT_VERSION_STORE_FILEGROUP() { return getToken(SQLServerStatementParser.PERSISTENT_VERSION_STORE_FILEGROUP, 0); }
3584 		public TerminalNode IMMEDIATE() { return getToken(SQLServerStatementParser.IMMEDIATE, 0); }
3585 		public TerminalNode NO_WAIT() { return getToken(SQLServerStatementParser.NO_WAIT, 0); }
3586 		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(SQLServerStatementParser.TARGET_RECOVERY_TIME, 0); }
3587 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
3588 		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(SQLServerStatementParser.HONOR_BROKER_PRIORITY, 0); }
3589 		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(SQLServerStatementParser.ERROR_BROKER_CONVERSATIONS, 0); }
3590 		public TerminalNode NEW_BROKER() { return getToken(SQLServerStatementParser.NEW_BROKER, 0); }
3591 		public TerminalNode DISABLE_BROKER() { return getToken(SQLServerStatementParser.DISABLE_BROKER, 0); }
3592 		public TerminalNode ENABLE_BROKER() { return getToken(SQLServerStatementParser.ENABLE_BROKER, 0); }
3593 		public TerminalNode MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, 0); }
3594 		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(SQLServerStatementParser.READ_COMMITTED_SNAPSHOT, 0); }
3595 		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(SQLServerStatementParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
3596 		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(SQLServerStatementParser.RECURSIVE_TRIGGERS, 0); }
3597 		public TerminalNode QUOTED_IDENTIFIER() { return getToken(SQLServerStatementParser.QUOTED_IDENTIFIER, 0); }
3598 		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(SQLServerStatementParser.NUMERIC_ROUNDABORT, 0); }
3599 		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(SQLServerStatementParser.CONCAT_NULL_YIELDS_NULL, 0); }
3600 		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(SQLServerStatementParser.COMPATIBILITY_LEVEL, 0); }
3601 		public TerminalNode ARITHABORT() { return getToken(SQLServerStatementParser.ARITHABORT, 0); }
3602 		public TerminalNode ANSI_WARNINGS() { return getToken(SQLServerStatementParser.ANSI_WARNINGS, 0); }
3603 		public TerminalNode ANSI_PADDING() { return getToken(SQLServerStatementParser.ANSI_PADDING, 0); }
3604 		public TerminalNode ANSI_NULLS() { return getToken(SQLServerStatementParser.ANSI_NULLS, 0); }
3605 		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(SQLServerStatementParser.ANSI_NULL_DEFAULT, 0); }
3606 		public TerminalNode PAGE_VERIFY() { return getToken(SQLServerStatementParser.PAGE_VERIFY, 0); }
3607 		public TerminalNode CHECKSUM() { return getToken(SQLServerStatementParser.CHECKSUM, 0); }
3608 		public TerminalNode TORN_PAGE_DETECTION() { return getToken(SQLServerStatementParser.TORN_PAGE_DETECTION, 0); }
3609 		public TerminalNode BULK_LOGGED() { return getToken(SQLServerStatementParser.BULK_LOGGED, 0); }
3610 		public TerminalNode RECOVERY() { return getToken(SQLServerStatementParser.RECOVERY, 0); }
3611 		public TerminalNode TOTAL_EXECUTION_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_EXECUTION_CPU_TIME_MS, 0); }
3612 		public TerminalNode TOTAL_COMPILE_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_COMPILE_CPU_TIME_MS, 0); }
3613 		public TerminalNode STALE_CAPTURE_POLICY_THRESHOLD() { return getToken(SQLServerStatementParser.STALE_CAPTURE_POLICY_THRESHOLD, 0); }
3614 		public TerminalNode EXECUTION_COUNT() { return getToken(SQLServerStatementParser.EXECUTION_COUNT, 0); }
3615 		public TerminalNode QUERY_CAPTURE_POLICY() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_POLICY, 0); }
3616 		public TerminalNode WAIT_STATS_CAPTURE_MODE() { return getToken(SQLServerStatementParser.WAIT_STATS_CAPTURE_MODE, 0); }
3617 		public TerminalNode MAX_PLANS_PER_QUERY() { return getToken(SQLServerStatementParser.MAX_PLANS_PER_QUERY, 0); }
3618 		public TerminalNode QUERY_CAPTURE_MODE() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_MODE, 0); }
3619 		public TerminalNode SIZE_BASED_CLEANUP_MODE() { return getToken(SQLServerStatementParser.SIZE_BASED_CLEANUP_MODE, 0); }
3620 		public TerminalNode INTERVAL_LENGTH_MINUTES() { return getToken(SQLServerStatementParser.INTERVAL_LENGTH_MINUTES, 0); }
3621 		public TerminalNode MAX_STORAGE_SIZE_MB() { return getToken(SQLServerStatementParser.MAX_STORAGE_SIZE_MB, 0); }
3622 		public TerminalNode DATA_FLUSH_INTERVAL_SECONDS() { return getToken(SQLServerStatementParser.DATA_FLUSH_INTERVAL_SECONDS, 0); }
3623 		public TerminalNode CLEANUP_POLICY() { return getToken(SQLServerStatementParser.CLEANUP_POLICY, 0); }
3624 		public TerminalNode CUSTOM() { return getToken(SQLServerStatementParser.CUSTOM, 0); }
3625 		public TerminalNode STALE_QUERY_THRESHOLD_DAYS() { return getToken(SQLServerStatementParser.STALE_QUERY_THRESHOLD_DAYS, 0); }
3626 		public TerminalNode OPERATION_MODE() { return getToken(SQLServerStatementParser.OPERATION_MODE, 0); }
3627 		public TerminalNode QUERY_STORE() { return getToken(SQLServerStatementParser.QUERY_STORE, 0); }
3628 		public TerminalNode CURSOR_DEFAULT() { return getToken(SQLServerStatementParser.CURSOR_DEFAULT, 0); }
3629 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
3630 		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(SQLServerStatementParser.CURSOR_CLOSE_ON_COMMIT, 0); }
3631 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
3632 		public TerminalNode CHANGE_RETENTION() { return getToken(SQLServerStatementParser.CHANGE_RETENTION, 0); }
3633 		public TerminalNode AUTO_CLEANUP() { return getToken(SQLServerStatementParser.AUTO_CLEANUP, 0); }
3634 		public TerminalNode CHANGE_TRACKING() { return getToken(SQLServerStatementParser.CHANGE_TRACKING, 0); }
3635 		public TerminalNode AUTOMATIC_TUNING() { return getToken(SQLServerStatementParser.AUTOMATIC_TUNING, 0); }
3636 		public TerminalNode FORCE_LAST_GOOD_PLAN() { return getToken(SQLServerStatementParser.FORCE_LAST_GOOD_PLAN, 0); }
3637 		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
3638 		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS, 0); }
3639 		public TerminalNode AUTO_SHRINK() { return getToken(SQLServerStatementParser.AUTO_SHRINK, 0); }
3640 		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_CREATE_STATISTICS, 0); }
3641 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
3642 		public TerminalNode AUTO_CLOSE() { return getToken(SQLServerStatementParser.AUTO_CLOSE, 0); }
3643 		public TerminalNode DATA_RETENTION() { return getToken(SQLServerStatementParser.DATA_RETENTION, 0); }
3644 		public TerminalNode TEMPORAL_HISTORY_RETENTION() { return getToken(SQLServerStatementParser.TEMPORAL_HISTORY_RETENTION, 0); }
3645 		public TerminalNode EDITION() { return getToken(SQLServerStatementParser.EDITION, 0); }
3646 		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(SQLServerStatementParser.MIXED_PAGE_ALLOCATION, 0); }
3647 		public TerminalNode DISABLED() { return getToken(SQLServerStatementParser.DISABLED, 0); }
3648 		public TerminalNode ALLOWED() { return getToken(SQLServerStatementParser.ALLOWED, 0); }
3649 		public TerminalNode HADR() { return getToken(SQLServerStatementParser.HADR, 0); }
3650 		public TerminalNode MULTI_USER() { return getToken(SQLServerStatementParser.MULTI_USER, 0); }
3651 		public TerminalNode RESTRICTED_USER() { return getToken(SQLServerStatementParser.RESTRICTED_USER, 0); }
3652 		public TerminalNode SINGLE_USER() { return getToken(SQLServerStatementParser.SINGLE_USER, 0); }
3653 		public TerminalNode OFFLINE() { return getToken(SQLServerStatementParser.OFFLINE, 0); }
3654 		public TerminalNode EMERGENCY() { return getToken(SQLServerStatementParser.EMERGENCY, 0); }
3655 		public TerminalNode SUSPEND() { return getToken(SQLServerStatementParser.SUSPEND, 0); }
3656 		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(SQLServerStatementParser.DATE_CORRELATION_OPTIMIZATION, 0); }
3657 		public TerminalNode ELASTIC_POOL() { return getToken(SQLServerStatementParser.ELASTIC_POOL, 0); }
3658 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
3659 		public TerminalNode DATABASE_NAME() { return getToken(SQLServerStatementParser.DATABASE_NAME, 0); }
3660 		public TerminalNode ALLOW_CONNECTIONS() { return getToken(SQLServerStatementParser.ALLOW_CONNECTIONS, 0); }
3661 		public TerminalNode GEO() { return getToken(SQLServerStatementParser.GEO, 0); }
3662 		public TerminalNode NAMED() { return getToken(SQLServerStatementParser.NAMED, 0); }
3663 		public TerminalNode DATEFIRST() { return getToken(SQLServerStatementParser.DATEFIRST, 0); }
3664 		public TerminalNode BACKUP_STORAGE_REDUNDANCY() { return getToken(SQLServerStatementParser.BACKUP_STORAGE_REDUNDANCY, 0); }
3665 		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(SQLServerStatementParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
3666 		public TerminalNode SECONDARY() { return getToken(SQLServerStatementParser.SECONDARY, 0); }
3667 		public TerminalNode FAILOVER() { return getToken(SQLServerStatementParser.FAILOVER, 0); }
3668 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
3669 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
3670 		public TerminalNode INLINE() { return getToken(SQLServerStatementParser.INLINE, 0); }
3671 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
3672 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
3673 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
3674 		public TerminalNode PERSISTENT_LOG_BUFFER() { return getToken(SQLServerStatementParser.PERSISTENT_LOG_BUFFER, 0); }
3675 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
3676 		public TerminalNode DATEFORMAT() { return getToken(SQLServerStatementParser.DATEFORMAT, 0); }
3677 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
3678 		public TerminalNode TRANSFER() { return getToken(SQLServerStatementParser.TRANSFER, 0); }
3679 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
3680 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
3681 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
3682 		public TerminalNode MEMBER() { return getToken(SQLServerStatementParser.MEMBER, 0); }
3683 		public TerminalNode SEARCH() { return getToken(SQLServerStatementParser.SEARCH, 0); }
3684 		public UnreservedWordContext(ParserRuleContext parent, int invokingState) {
3685 			super(parent, invokingState);
3686 		}
3687 		@Override public int getRuleIndex() { return RULE_unreservedWord; }
3688 		@Override
3689 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3690 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUnreservedWord(this);
3691 			else return visitor.visitChildren(this);
3692 		}
3693 	}
3694 
3695 	public final UnreservedWordContext unreservedWord() throws RecognitionException {
3696 		UnreservedWordContext _localctx = new UnreservedWordContext(_ctx, getState());
3697 		enterRule(_localctx, 48, RULE_unreservedWord);
3698 		int _la;
3699 		try {
3700 			enterOuterAlt(_localctx, 1);
3701 			{
3702 			setState(1147);
3703 			_la = _input.LA(1);
3704 			if ( !(((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (GROUP - 53)))) != 0) || ((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (LIMIT - 121)) | (1L << (OFFSET - 121)) | (1L << (SAVEPOINT - 121)) | (1L << (BOOLEAN - 121)) | (1L << (ARRAY - 121)) | (1L << (DATE - 121)) | (1L << (LOCALTIME - 121)) | (1L << (LOCALTIMESTAMP - 121)) | (1L << (QUARTER - 121)) | (1L << (WEEK - 121)) | (1L << (DAY - 121)) | (1L << (MICROSECOND - 121)) | (1L << (MAX - 121)) | (1L << (MIN - 121)) | (1L << (SUM - 121)) | (1L << (COUNT - 121)) | (1L << (AVG - 121)) | (1L << (ENABLE - 121)) | (1L << (DISABLE - 121)) | (1L << (INSTANCE - 121)) | (1L << (DO - 121)) | (1L << (DEFINER - 121)) | (1L << (SQL - 121)) | (1L << (CASCADED - 121)) | (1L << (LOCAL - 121)) | (1L << (NEXT - 121)) | (1L << (NAME - 121)) | (1L << (INTEGER - 121)) | (1L << (TYPE - 121)))) != 0) || ((((_la - 201)) & ~0x3f) == 0 && ((1L << (_la - 201)) & ((1L << (READ_ONLY - 201)) | (1L << (DATABASE - 201)) | (1L << (DATEPART - 201)) | (1L << (PASSWORD - 201)) | (1L << (BINARY - 201)) | (1L << (HIDDEN_ - 201)) | (1L << (MOD - 201)) | (1L << (PARTITION - 201)) | (1L << (PARTITIONS - 201)) | (1L << (TOP - 201)) | (1L << (ROW - 201)) | (1L << (ROWS - 201)) | (1L << (XOR - 201)) | (1L << (ALWAYS - 201)) | (1L << (ROLE - 201)) | (1L << (START - 201)) | (1L << (ALGORITHM - 201)) | (1L << (AUTO - 201)) | (1L << (BLOCKERS - 201)) | (1L << (CLUSTERED - 201)) | (1L << (NONCLUSTERED - 201)) | (1L << (COLUMNSTORE - 201)) | (1L << (CONTENT - 201)) | (1L << (YEARS - 201)) | (1L << (MONTHS - 201)) | (1L << (WEEKS - 201)) | (1L << (DAYS - 201)) | (1L << (MINUTES - 201)) | (1L << (DENY - 201)) | (1L << (DETERMINISTIC - 201)) | (1L << (DISTRIBUTION - 201)) | (1L << (DOCUMENT - 201)) | (1L << (DURABILITY - 201)) | (1L << (ENCRYPTED - 201)) | (1L << (FILESTREAM - 201)) | (1L << (FILETABLE - 201)) | (1L << (FILLFACTOR - 201)) | (1L << (FOLLOWING - 201)) | (1L << (HASH - 201)) | (1L << (HEAP - 201)))) != 0) || ((((_la - 266)) & ~0x3f) == 0 && ((1L << (_la - 266)) & ((1L << (INBOUND - 266)) | (1L << (OUTBOUND - 266)) | (1L << (UNBOUNDED - 266)) | (1L << (INFINITE - 266)) | (1L << (LOGIN - 266)) | (1L << (MASKED - 266)) | (1L << (MAXDOP - 266)) | (1L << (MOVE - 266)) | (1L << (NOCHECK - 266)) | (1L << (OBJECT - 266)) | (1L << (OFF - 266)) | (1L << (ONLINE - 266)) | (1L << (OVER - 266)) | (1L << (PAGE - 266)) | (1L << (PAUSED - 266)) | (1L << (PERIOD - 266)) | (1L << (PERSISTED - 266)) | (1L << (PRECEDING - 266)) | (1L << (RANDOMIZED - 266)) | (1L << (RANGE - 266)) | (1L << (REBUILD - 266)) | (1L << (REPLICATE - 266)) | (1L << (REPLICATION - 266)) | (1L << (RESUMABLE - 266)) | (1L << (ROWGUIDCOL - 266)) | (1L << (SAVE - 266)) | (1L << (SELF - 266)) | (1L << (SPARSE - 266)) | (1L << (SWITCH - 266)) | (1L << (TRAN - 266)) | (1L << (TRANCOUNT - 266)) | (1L << (CONTROL - 266)) | (1L << (CONCAT - 266)) | (1L << (TAKE - 266)) | (1L << (OWNERSHIP - 266)) | (1L << (DEFINITION - 266)) | (1L << (APPLICATION - 266)) | (1L << (ASSEMBLY - 266)) | (1L << (SYMMETRIC - 266)) | (1L << (ASYMMETRIC - 266)) | (1L << (SERVER - 266)) | (1L << (RECEIVE - 266)) | (1L << (CHANGE - 266)) | (1L << (TRACE - 266)) | (1L << (TRACKING - 266)) | (1L << (RESOURCES - 266)) | (1L << (SETTINGS - 266)) | (1L << (STATE - 266)) | (1L << (AVAILABILITY - 266)) | (1L << (CREDENTIAL - 266)) | (1L << (ENDPOINT - 266)) | (1L << (EVENT - 266)) | (1L << (NOTIFICATION - 266)) | (1L << (LINKED - 266)) | (1L << (AUDIT - 266)) | (1L << (DDL - 266)))) != 0) || ((((_la - 330)) & ~0x3f) == 0 && ((1L << (_la - 330)) & ((1L << (XML - 330)) | (1L << (IMPERSONATE - 330)) | (1L << (SECURABLES - 330)) | (1L << (AUTHENTICATE - 330)) | (1L << (EXTERNAL - 330)) | (1L << (ACCESS - 330)) | (1L << (ADMINISTER - 330)) | (1L << (BULK - 330)) | (1L << (OPERATIONS - 330)) | (1L << (UNSAFE - 330)) | (1L << (SHUTDOWN - 330)) | (1L << (SCOPED - 330)) | (1L << (CONFIGURATION - 330)) | (1L << (DATASPACE - 330)) | (1L << (SERVICE - 330)) | (1L << (CERTIFICATE - 330)) | (1L << (CONTRACT - 330)) | (1L << (ENCRYPTION - 330)) | (1L << (MASTER - 330)) | (1L << (DATA - 330)) | (1L << (SOURCE - 330)) | (1L << (FILE - 330)) | (1L << (FORMAT - 330)) | (1L << (LIBRARY - 330)) | (1L << (FULLTEXT - 330)) | (1L << (MASK - 330)) | (1L << (UNMASK - 330)) | (1L << (MESSAGE - 330)) | (1L << (REMOTE - 330)) | (1L << (BINDING - 330)) | (1L << (ROUTE - 330)) | (1L << (SECURITY - 330)) | (1L << (POLICY - 330)) | (1L << (AGGREGATE - 330)) | (1L << (QUEUE - 330)) | (1L << (RULE - 330)) | (1L << (SYNONYM - 330)) | (1L << (COLLECTION - 330)) | (1L << (SCRIPT - 330)) | (1L << (KILL - 330)) | (1L << (BACKUP - 330)) | (1L << (LOG - 330)) | (1L << (SHOWPLAN - 330)) | (1L << (SUBSCRIBE - 330)) | (1L << (QUERY - 330)) | (1L << (NOTIFICATIONS - 330)) | (1L << (CHECKPOINT - 330)) | (1L << (SEQUENCE - 330)) | (1L << (ABORT_AFTER_WAIT - 330)) | (1L << (ALLOW_PAGE_LOCKS - 330)) | (1L << (ALLOW_ROW_LOCKS - 330)) | (1L << (ALL_SPARSE_COLUMNS - 330)) | (1L << (BUCKET_COUNT - 330)) | (1L << (COLUMNSTORE_ARCHIVE - 330)) | (1L << (COLUMN_ENCRYPTION_KEY - 330)) | (1L << (COLUMN_SET - 330)) | (1L << (COMPRESSION_DELAY - 330)) | (1L << (DATABASE_DEAULT - 330)) | (1L << (DATA_COMPRESSION - 330)) | (1L << (DATA_CONSISTENCY_CHECK - 330)) | (1L << (ENCRYPTION_TYPE - 330)) | (1L << (SYSTEM_TIME - 330)) | (1L << (SYSTEM_VERSIONING - 330)) | (1L << (TEXTIMAGE_ON - 330)))) != 0) || ((((_la - 394)) & ~0x3f) == 0 && ((1L << (_la - 394)) & ((1L << (WAIT_AT_LOW_PRIORITY - 394)) | (1L << (STATISTICS_INCREMENTAL - 394)) | (1L << (STATISTICS_NORECOMPUTE - 394)) | (1L << (ROUND_ROBIN - 394)) | (1L << (SCHEMA_AND_DATA - 394)) | (1L << (SCHEMA_ONLY - 394)) | (1L << (SORT_IN_TEMPDB - 394)) | (1L << (IGNORE_DUP_KEY - 394)) | (1L << (IMPLICIT_TRANSACTIONS - 394)) | (1L << (MAX_DURATION - 394)) | (1L << (MEMORY_OPTIMIZED - 394)) | (1L << (MIGRATION_STATE - 394)) | (1L << (PAD_INDEX - 394)) | (1L << (REMOTE_DATA_ARCHIVE - 394)) | (1L << (FILESTREAM_ON - 394)) | (1L << (FILETABLE_COLLATE_FILENAME - 394)) | (1L << (FILETABLE_DIRECTORY - 394)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILTER_PREDICATE - 394)) | (1L << (HISTORY_RETENTION_PERIOD - 394)) | (1L << (HISTORY_TABLE - 394)) | (1L << (LOCK_ESCALATION - 394)) | (1L << (DROP_EXISTING - 394)) | (1L << (ROW_NUMBER - 394)) | (1L << (FIRST - 394)) | (1L << (DATETIME2 - 394)) | (1L << (OUTPUT - 394)) | (1L << (INSERTED - 394)) | (1L << (DELETED - 394)))) != 0) || ((((_la - 478)) & ~0x3f) == 0 && ((1L << (_la - 478)) & ((1L << (FILENAME - 478)) | (1L << (MAXSIZE - 478)) | (1L << (FILEGROWTH - 478)) | (1L << (UNLIMITED - 478)) | (1L << (KB - 478)) | (1L << (MB - 478)) | (1L << (GB - 478)) | (1L << (TB - 478)) | (1L << (MEMORY_OPTIMIZED_DATA - 478)) | (1L << (FILEGROUP - 478)) | (1L << (NON_TRANSACTED_ACCESS - 478)) | (1L << (DB_CHAINING - 478)) | (1L << (TRUSTWORTHY - 478)) | (1L << (FORWARD_ONLY - 478)) | (1L << (KEYSET - 478)) | (1L << (FAST_FORWARD - 478)) | (1L << (SCROLL_LOCKS - 478)) | (1L << (OPTIMISTIC - 478)) | (1L << (TYPE_WARNING - 478)) | (1L << (SCHEMABINDING - 478)) | (1L << (CALLER - 478)) | (1L << (OWNER - 478)) | (1L << (SNAPSHOT - 478)) | (1L << (REPEATABLE - 478)) | (1L << (SERIALIZABLE - 478)) | (1L << (NATIVE_COMPILATION - 478)) | (1L << (VIEW_METADATA - 478)) | (1L << (INSTEAD - 478)) | (1L << (APPEND - 478)) | (1L << (INCREMENT - 478)) | (1L << (CACHE - 478)) | (1L << (MINVALUE - 478)) | (1L << (MAXVALUE - 478)) | (1L << (RESTART - 478)) | (1L << (LOB_COMPACTION - 478)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 478)) | (1L << (REORGANIZE - 478)) | (1L << (RESUME - 478)) | (1L << (PAUSE - 478)) | (1L << (ABORT - 478)))) != 0) || ((((_la - 544)) & ~0x3f) == 0 && ((1L << (_la - 544)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 544)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 544)) | (1L << (IMMEDIATE - 544)) | (1L << (NO_WAIT - 544)) | (1L << (TARGET_RECOVERY_TIME - 544)) | (1L << (SECONDS - 544)) | (1L << (HONOR_BROKER_PRIORITY - 544)) | (1L << (ERROR_BROKER_CONVERSATIONS - 544)) | (1L << (NEW_BROKER - 544)) | (1L << (DISABLE_BROKER - 544)) | (1L << (ENABLE_BROKER - 544)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 544)) | (1L << (READ_COMMITTED_SNAPSHOT - 544)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 544)) | (1L << (RECURSIVE_TRIGGERS - 544)) | (1L << (QUOTED_IDENTIFIER - 544)) | (1L << (NUMERIC_ROUNDABORT - 544)) | (1L << (CONCAT_NULL_YIELDS_NULL - 544)) | (1L << (COMPATIBILITY_LEVEL - 544)) | (1L << (ARITHABORT - 544)) | (1L << (ANSI_WARNINGS - 544)) | (1L << (ANSI_PADDING - 544)) | (1L << (ANSI_NULLS - 544)) | (1L << (ANSI_NULL_DEFAULT - 544)) | (1L << (PAGE_VERIFY - 544)) | (1L << (CHECKSUM - 544)) | (1L << (TORN_PAGE_DETECTION - 544)) | (1L << (BULK_LOGGED - 544)) | (1L << (RECOVERY - 544)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 544)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 544)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 544)) | (1L << (EXECUTION_COUNT - 544)) | (1L << (QUERY_CAPTURE_POLICY - 544)) | (1L << (WAIT_STATS_CAPTURE_MODE - 544)) | (1L << (MAX_PLANS_PER_QUERY - 544)) | (1L << (QUERY_CAPTURE_MODE - 544)) | (1L << (SIZE_BASED_CLEANUP_MODE - 544)) | (1L << (INTERVAL_LENGTH_MINUTES - 544)) | (1L << (MAX_STORAGE_SIZE_MB - 544)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 544)) | (1L << (CLEANUP_POLICY - 544)) | (1L << (CUSTOM - 544)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 544)) | (1L << (OPERATION_MODE - 544)) | (1L << (QUERY_STORE - 544)) | (1L << (CURSOR_DEFAULT - 544)) | (1L << (GLOBAL - 544)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 544)) | (1L << (HOURS - 544)) | (1L << (CHANGE_RETENTION - 544)) | (1L << (AUTO_CLEANUP - 544)) | (1L << (CHANGE_TRACKING - 544)) | (1L << (AUTOMATIC_TUNING - 544)) | (1L << (FORCE_LAST_GOOD_PLAN - 544)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 544)) | (1L << (AUTO_UPDATE_STATISTICS - 544)) | (1L << (AUTO_SHRINK - 544)) | (1L << (AUTO_CREATE_STATISTICS - 544)) | (1L << (INCREMENTAL - 544)) | (1L << (AUTO_CLOSE - 544)) | (1L << (DATA_RETENTION - 544)) | (1L << (TEMPORAL_HISTORY_RETENTION - 544)) | (1L << (EDITION - 544)))) != 0) || ((((_la - 608)) & ~0x3f) == 0 && ((1L << (_la - 608)) & ((1L << (MIXED_PAGE_ALLOCATION - 608)) | (1L << (DISABLED - 608)) | (1L << (ALLOWED - 608)) | (1L << (HADR - 608)) | (1L << (MULTI_USER - 608)) | (1L << (RESTRICTED_USER - 608)) | (1L << (SINGLE_USER - 608)) | (1L << (OFFLINE - 608)) | (1L << (EMERGENCY - 608)) | (1L << (SUSPEND - 608)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 608)) | (1L << (ELASTIC_POOL - 608)) | (1L << (SERVICE_OBJECTIVE - 608)) | (1L << (DATABASE_NAME - 608)) | (1L << (ALLOW_CONNECTIONS - 608)) | (1L << (GEO - 608)) | (1L << (NAMED - 608)) | (1L << (DATEFIRST - 608)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 608)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 608)) | (1L << (SECONDARY - 608)) | (1L << (FAILOVER - 608)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 608)) | (1L << (DEFAULT_LANGUAGE - 608)) | (1L << (INLINE - 608)) | (1L << (NESTED_TRIGGERS - 608)) | (1L << (TRANSFORM_NOISE_WORDS - 608)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 608)) | (1L << (PERSISTENT_LOG_BUFFER - 608)) | (1L << (DIRECTORY_NAME - 608)) | (1L << (DATEFORMAT - 608)) | (1L << (DELAYED_DURABILITY - 608)) | (1L << (AUTHORIZATION - 608)) | (1L << (TRANSFER - 608)) | (1L << (SEARCH - 608)) | (1L << (MEMBER - 608)))) != 0)) ) {
3705 			_errHandler.recoverInline(this);
3706 			}
3707 			else {
3708 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
3709 				_errHandler.reportMatch(this);
3710 				consume();
3711 			}
3712 			}
3713 		}
3714 		catch (RecognitionException re) {
3715 			_localctx.exception = re;
3716 			_errHandler.reportError(this, re);
3717 			_errHandler.recover(this, re);
3718 		}
3719 		finally {
3720 			exitRule();
3721 		}
3722 		return _localctx;
3723 	}
3724 
3725 	public static class DatabaseNameContext extends ParserRuleContext {
3726 		public IdentifierContext identifier() {
3727 			return getRuleContext(IdentifierContext.class,0);
3728 		}
3729 		public DatabaseNameContext(ParserRuleContext parent, int invokingState) {
3730 			super(parent, invokingState);
3731 		}
3732 		@Override public int getRuleIndex() { return RULE_databaseName; }
3733 		@Override
3734 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3735 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseName(this);
3736 			else return visitor.visitChildren(this);
3737 		}
3738 	}
3739 
3740 	public final DatabaseNameContext databaseName() throws RecognitionException {
3741 		DatabaseNameContext _localctx = new DatabaseNameContext(_ctx, getState());
3742 		enterRule(_localctx, 50, RULE_databaseName);
3743 		try {
3744 			enterOuterAlt(_localctx, 1);
3745 			{
3746 			setState(1149);
3747 			identifier();
3748 			}
3749 		}
3750 		catch (RecognitionException re) {
3751 			_localctx.exception = re;
3752 			_errHandler.reportError(this, re);
3753 			_errHandler.recover(this, re);
3754 		}
3755 		finally {
3756 			exitRule();
3757 		}
3758 		return _localctx;
3759 	}
3760 
3761 	public static class SchemaNameContext extends ParserRuleContext {
3762 		public IdentifierContext identifier() {
3763 			return getRuleContext(IdentifierContext.class,0);
3764 		}
3765 		public SchemaNameContext(ParserRuleContext parent, int invokingState) {
3766 			super(parent, invokingState);
3767 		}
3768 		@Override public int getRuleIndex() { return RULE_schemaName; }
3769 		@Override
3770 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3771 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaName(this);
3772 			else return visitor.visitChildren(this);
3773 		}
3774 	}
3775 
3776 	public final SchemaNameContext schemaName() throws RecognitionException {
3777 		SchemaNameContext _localctx = new SchemaNameContext(_ctx, getState());
3778 		enterRule(_localctx, 52, RULE_schemaName);
3779 		try {
3780 			enterOuterAlt(_localctx, 1);
3781 			{
3782 			setState(1151);
3783 			identifier();
3784 			}
3785 		}
3786 		catch (RecognitionException re) {
3787 			_localctx.exception = re;
3788 			_errHandler.reportError(this, re);
3789 			_errHandler.recover(this, re);
3790 		}
3791 		finally {
3792 			exitRule();
3793 		}
3794 		return _localctx;
3795 	}
3796 
3797 	public static class FunctionNameContext extends ParserRuleContext {
3798 		public NameContext name() {
3799 			return getRuleContext(NameContext.class,0);
3800 		}
3801 		public OwnerContext owner() {
3802 			return getRuleContext(OwnerContext.class,0);
3803 		}
3804 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3805 		public FunctionNameContext(ParserRuleContext parent, int invokingState) {
3806 			super(parent, invokingState);
3807 		}
3808 		@Override public int getRuleIndex() { return RULE_functionName; }
3809 		@Override
3810 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3811 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionName(this);
3812 			else return visitor.visitChildren(this);
3813 		}
3814 	}
3815 
3816 	public final FunctionNameContext functionName() throws RecognitionException {
3817 		FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState());
3818 		enterRule(_localctx, 54, RULE_functionName);
3819 		try {
3820 			enterOuterAlt(_localctx, 1);
3821 			{
3822 			setState(1156);
3823 			_errHandler.sync(this);
3824 			switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
3825 			case 1:
3826 				{
3827 				setState(1153);
3828 				owner();
3829 				setState(1154);
3830 				match(DOT_);
3831 				}
3832 				break;
3833 			}
3834 			setState(1158);
3835 			name();
3836 			}
3837 		}
3838 		catch (RecognitionException re) {
3839 			_localctx.exception = re;
3840 			_errHandler.reportError(this, re);
3841 			_errHandler.recover(this, re);
3842 		}
3843 		finally {
3844 			exitRule();
3845 		}
3846 		return _localctx;
3847 	}
3848 
3849 	public static class ProcedureNameContext extends ParserRuleContext {
3850 		public NameContext name() {
3851 			return getRuleContext(NameContext.class,0);
3852 		}
3853 		public OwnerContext owner() {
3854 			return getRuleContext(OwnerContext.class,0);
3855 		}
3856 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3857 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
3858 		public NumberLiteralsContext numberLiterals() {
3859 			return getRuleContext(NumberLiteralsContext.class,0);
3860 		}
3861 		public ProcedureNameContext(ParserRuleContext parent, int invokingState) {
3862 			super(parent, invokingState);
3863 		}
3864 		@Override public int getRuleIndex() { return RULE_procedureName; }
3865 		@Override
3866 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3867 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcedureName(this);
3868 			else return visitor.visitChildren(this);
3869 		}
3870 	}
3871 
3872 	public final ProcedureNameContext procedureName() throws RecognitionException {
3873 		ProcedureNameContext _localctx = new ProcedureNameContext(_ctx, getState());
3874 		enterRule(_localctx, 56, RULE_procedureName);
3875 		try {
3876 			enterOuterAlt(_localctx, 1);
3877 			{
3878 			setState(1163);
3879 			_errHandler.sync(this);
3880 			switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
3881 			case 1:
3882 				{
3883 				setState(1160);
3884 				owner();
3885 				setState(1161);
3886 				match(DOT_);
3887 				}
3888 				break;
3889 			}
3890 			setState(1165);
3891 			name();
3892 			setState(1168);
3893 			_errHandler.sync(this);
3894 			switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
3895 			case 1:
3896 				{
3897 				setState(1166);
3898 				match(SEMI_);
3899 				setState(1167);
3900 				numberLiterals();
3901 				}
3902 				break;
3903 			}
3904 			}
3905 		}
3906 		catch (RecognitionException re) {
3907 			_localctx.exception = re;
3908 			_errHandler.reportError(this, re);
3909 			_errHandler.recover(this, re);
3910 		}
3911 		finally {
3912 			exitRule();
3913 		}
3914 		return _localctx;
3915 	}
3916 
3917 	public static class ViewNameContext extends ParserRuleContext {
3918 		public NameContext name() {
3919 			return getRuleContext(NameContext.class,0);
3920 		}
3921 		public OwnerContext owner() {
3922 			return getRuleContext(OwnerContext.class,0);
3923 		}
3924 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3925 		public ViewNameContext(ParserRuleContext parent, int invokingState) {
3926 			super(parent, invokingState);
3927 		}
3928 		@Override public int getRuleIndex() { return RULE_viewName; }
3929 		@Override
3930 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3931 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitViewName(this);
3932 			else return visitor.visitChildren(this);
3933 		}
3934 	}
3935 
3936 	public final ViewNameContext viewName() throws RecognitionException {
3937 		ViewNameContext _localctx = new ViewNameContext(_ctx, getState());
3938 		enterRule(_localctx, 58, RULE_viewName);
3939 		try {
3940 			enterOuterAlt(_localctx, 1);
3941 			{
3942 			setState(1173);
3943 			_errHandler.sync(this);
3944 			switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
3945 			case 1:
3946 				{
3947 				setState(1170);
3948 				owner();
3949 				setState(1171);
3950 				match(DOT_);
3951 				}
3952 				break;
3953 			}
3954 			setState(1175);
3955 			name();
3956 			}
3957 		}
3958 		catch (RecognitionException re) {
3959 			_localctx.exception = re;
3960 			_errHandler.reportError(this, re);
3961 			_errHandler.recover(this, re);
3962 		}
3963 		finally {
3964 			exitRule();
3965 		}
3966 		return _localctx;
3967 	}
3968 
3969 	public static class TriggerNameContext extends ParserRuleContext {
3970 		public NameContext name() {
3971 			return getRuleContext(NameContext.class,0);
3972 		}
3973 		public SchemaNameContext schemaName() {
3974 			return getRuleContext(SchemaNameContext.class,0);
3975 		}
3976 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3977 		public TriggerNameContext(ParserRuleContext parent, int invokingState) {
3978 			super(parent, invokingState);
3979 		}
3980 		@Override public int getRuleIndex() { return RULE_triggerName; }
3981 		@Override
3982 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3983 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTriggerName(this);
3984 			else return visitor.visitChildren(this);
3985 		}
3986 	}
3987 
3988 	public final TriggerNameContext triggerName() throws RecognitionException {
3989 		TriggerNameContext _localctx = new TriggerNameContext(_ctx, getState());
3990 		enterRule(_localctx, 60, RULE_triggerName);
3991 		try {
3992 			enterOuterAlt(_localctx, 1);
3993 			{
3994 			setState(1180);
3995 			_errHandler.sync(this);
3996 			switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
3997 			case 1:
3998 				{
3999 				setState(1177);
4000 				schemaName();
4001 				setState(1178);
4002 				match(DOT_);
4003 				}
4004 				break;
4005 			}
4006 			setState(1182);
4007 			name();
4008 			}
4009 		}
4010 		catch (RecognitionException re) {
4011 			_localctx.exception = re;
4012 			_errHandler.reportError(this, re);
4013 			_errHandler.recover(this, re);
4014 		}
4015 		finally {
4016 			exitRule();
4017 		}
4018 		return _localctx;
4019 	}
4020 
4021 	public static class SequenceNameContext extends ParserRuleContext {
4022 		public NameContext name() {
4023 			return getRuleContext(NameContext.class,0);
4024 		}
4025 		public SchemaNameContext schemaName() {
4026 			return getRuleContext(SchemaNameContext.class,0);
4027 		}
4028 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4029 		public SequenceNameContext(ParserRuleContext parent, int invokingState) {
4030 			super(parent, invokingState);
4031 		}
4032 		@Override public int getRuleIndex() { return RULE_sequenceName; }
4033 		@Override
4034 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4035 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSequenceName(this);
4036 			else return visitor.visitChildren(this);
4037 		}
4038 	}
4039 
4040 	public final SequenceNameContext sequenceName() throws RecognitionException {
4041 		SequenceNameContext _localctx = new SequenceNameContext(_ctx, getState());
4042 		enterRule(_localctx, 62, RULE_sequenceName);
4043 		try {
4044 			enterOuterAlt(_localctx, 1);
4045 			{
4046 			setState(1187);
4047 			_errHandler.sync(this);
4048 			switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
4049 			case 1:
4050 				{
4051 				setState(1184);
4052 				schemaName();
4053 				setState(1185);
4054 				match(DOT_);
4055 				}
4056 				break;
4057 			}
4058 			setState(1189);
4059 			name();
4060 			}
4061 		}
4062 		catch (RecognitionException re) {
4063 			_localctx.exception = re;
4064 			_errHandler.reportError(this, re);
4065 			_errHandler.recover(this, re);
4066 		}
4067 		finally {
4068 			exitRule();
4069 		}
4070 		return _localctx;
4071 	}
4072 
4073 	public static class TableNameContext extends ParserRuleContext {
4074 		public NameContext name() {
4075 			return getRuleContext(NameContext.class,0);
4076 		}
4077 		public DatabaseNameContext databaseName() {
4078 			return getRuleContext(DatabaseNameContext.class,0);
4079 		}
4080 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
4081 		public TerminalNode DOT_(int i) {
4082 			return getToken(SQLServerStatementParser.DOT_, i);
4083 		}
4084 		public OwnerContext owner() {
4085 			return getRuleContext(OwnerContext.class,0);
4086 		}
4087 		public TableNameContext(ParserRuleContext parent, int invokingState) {
4088 			super(parent, invokingState);
4089 		}
4090 		@Override public int getRuleIndex() { return RULE_tableName; }
4091 		@Override
4092 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4093 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableName(this);
4094 			else return visitor.visitChildren(this);
4095 		}
4096 	}
4097 
4098 	public final TableNameContext tableName() throws RecognitionException {
4099 		TableNameContext _localctx = new TableNameContext(_ctx, getState());
4100 		enterRule(_localctx, 64, RULE_tableName);
4101 		try {
4102 			enterOuterAlt(_localctx, 1);
4103 			{
4104 			setState(1203);
4105 			_errHandler.sync(this);
4106 			switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
4107 			case 1:
4108 				{
4109 				setState(1191);
4110 				databaseName();
4111 				setState(1192);
4112 				match(DOT_);
4113 				setState(1196);
4114 				_errHandler.sync(this);
4115 				switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
4116 				case 1:
4117 					{
4118 					setState(1193);
4119 					owner();
4120 					setState(1194);
4121 					match(DOT_);
4122 					}
4123 					break;
4124 				}
4125 				}
4126 				break;
4127 			case 2:
4128 				{
4129 				setState(1201);
4130 				_errHandler.sync(this);
4131 				switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
4132 				case 1:
4133 					{
4134 					setState(1198);
4135 					owner();
4136 					setState(1199);
4137 					match(DOT_);
4138 					}
4139 					break;
4140 				}
4141 				}
4142 				break;
4143 			}
4144 			setState(1205);
4145 			name();
4146 			}
4147 		}
4148 		catch (RecognitionException re) {
4149 			_localctx.exception = re;
4150 			_errHandler.reportError(this, re);
4151 			_errHandler.recover(this, re);
4152 		}
4153 		finally {
4154 			exitRule();
4155 		}
4156 		return _localctx;
4157 	}
4158 
4159 	public static class QueueNameContext extends ParserRuleContext {
4160 		public NameContext name() {
4161 			return getRuleContext(NameContext.class,0);
4162 		}
4163 		public SchemaNameContext schemaName() {
4164 			return getRuleContext(SchemaNameContext.class,0);
4165 		}
4166 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4167 		public QueueNameContext(ParserRuleContext parent, int invokingState) {
4168 			super(parent, invokingState);
4169 		}
4170 		@Override public int getRuleIndex() { return RULE_queueName; }
4171 		@Override
4172 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4173 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueueName(this);
4174 			else return visitor.visitChildren(this);
4175 		}
4176 	}
4177 
4178 	public final QueueNameContext queueName() throws RecognitionException {
4179 		QueueNameContext _localctx = new QueueNameContext(_ctx, getState());
4180 		enterRule(_localctx, 66, RULE_queueName);
4181 		try {
4182 			enterOuterAlt(_localctx, 1);
4183 			{
4184 			setState(1210);
4185 			_errHandler.sync(this);
4186 			switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
4187 			case 1:
4188 				{
4189 				setState(1207);
4190 				schemaName();
4191 				setState(1208);
4192 				match(DOT_);
4193 				}
4194 				break;
4195 			}
4196 			setState(1212);
4197 			name();
4198 			}
4199 		}
4200 		catch (RecognitionException re) {
4201 			_localctx.exception = re;
4202 			_errHandler.reportError(this, re);
4203 			_errHandler.recover(this, re);
4204 		}
4205 		finally {
4206 			exitRule();
4207 		}
4208 		return _localctx;
4209 	}
4210 
4211 	public static class ContractNameContext extends ParserRuleContext {
4212 		public NameContext name() {
4213 			return getRuleContext(NameContext.class,0);
4214 		}
4215 		public ContractNameContext(ParserRuleContext parent, int invokingState) {
4216 			super(parent, invokingState);
4217 		}
4218 		@Override public int getRuleIndex() { return RULE_contractName; }
4219 		@Override
4220 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4221 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitContractName(this);
4222 			else return visitor.visitChildren(this);
4223 		}
4224 	}
4225 
4226 	public final ContractNameContext contractName() throws RecognitionException {
4227 		ContractNameContext _localctx = new ContractNameContext(_ctx, getState());
4228 		enterRule(_localctx, 68, RULE_contractName);
4229 		try {
4230 			enterOuterAlt(_localctx, 1);
4231 			{
4232 			setState(1214);
4233 			name();
4234 			}
4235 		}
4236 		catch (RecognitionException re) {
4237 			_localctx.exception = re;
4238 			_errHandler.reportError(this, re);
4239 			_errHandler.recover(this, re);
4240 		}
4241 		finally {
4242 			exitRule();
4243 		}
4244 		return _localctx;
4245 	}
4246 
4247 	public static class ServiceNameContext extends ParserRuleContext {
4248 		public NameContext name() {
4249 			return getRuleContext(NameContext.class,0);
4250 		}
4251 		public ServiceNameContext(ParserRuleContext parent, int invokingState) {
4252 			super(parent, invokingState);
4253 		}
4254 		@Override public int getRuleIndex() { return RULE_serviceName; }
4255 		@Override
4256 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4257 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceName(this);
4258 			else return visitor.visitChildren(this);
4259 		}
4260 	}
4261 
4262 	public final ServiceNameContext serviceName() throws RecognitionException {
4263 		ServiceNameContext _localctx = new ServiceNameContext(_ctx, getState());
4264 		enterRule(_localctx, 70, RULE_serviceName);
4265 		try {
4266 			enterOuterAlt(_localctx, 1);
4267 			{
4268 			setState(1216);
4269 			name();
4270 			}
4271 		}
4272 		catch (RecognitionException re) {
4273 			_localctx.exception = re;
4274 			_errHandler.reportError(this, re);
4275 			_errHandler.recover(this, re);
4276 		}
4277 		finally {
4278 			exitRule();
4279 		}
4280 		return _localctx;
4281 	}
4282 
4283 	public static class ColumnNameContext extends ParserRuleContext {
4284 		public NameContext name() {
4285 			return getRuleContext(NameContext.class,0);
4286 		}
4287 		public ScriptVariableNameContext scriptVariableName() {
4288 			return getRuleContext(ScriptVariableNameContext.class,0);
4289 		}
4290 		public OwnerContext owner() {
4291 			return getRuleContext(OwnerContext.class,0);
4292 		}
4293 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4294 		public ColumnNameContext(ParserRuleContext parent, int invokingState) {
4295 			super(parent, invokingState);
4296 		}
4297 		@Override public int getRuleIndex() { return RULE_columnName; }
4298 		@Override
4299 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4300 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnName(this);
4301 			else return visitor.visitChildren(this);
4302 		}
4303 	}
4304 
4305 	public final ColumnNameContext columnName() throws RecognitionException {
4306 		ColumnNameContext _localctx = new ColumnNameContext(_ctx, getState());
4307 		enterRule(_localctx, 72, RULE_columnName);
4308 		try {
4309 			enterOuterAlt(_localctx, 1);
4310 			{
4311 			setState(1221);
4312 			_errHandler.sync(this);
4313 			switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
4314 			case 1:
4315 				{
4316 				setState(1218);
4317 				owner();
4318 				setState(1219);
4319 				match(DOT_);
4320 				}
4321 				break;
4322 			}
4323 			setState(1225);
4324 			_errHandler.sync(this);
4325 			switch (_input.LA(1)) {
4326 			case TRUNCATE:
4327 			case SCHEMA:
4328 			case FUNCTION:
4329 			case TRIGGER:
4330 			case CAST:
4331 			case GROUP:
4332 			case LIMIT:
4333 			case OFFSET:
4334 			case SAVEPOINT:
4335 			case BOOLEAN:
4336 			case ARRAY:
4337 			case DATE:
4338 			case LOCALTIME:
4339 			case LOCALTIMESTAMP:
4340 			case QUARTER:
4341 			case WEEK:
4342 			case DAY:
4343 			case MICROSECOND:
4344 			case MAX:
4345 			case MIN:
4346 			case SUM:
4347 			case COUNT:
4348 			case AVG:
4349 			case ENABLE:
4350 			case DISABLE:
4351 			case INSTANCE:
4352 			case DO:
4353 			case DEFINER:
4354 			case SQL:
4355 			case CASCADED:
4356 			case LOCAL:
4357 			case NEXT:
4358 			case NAME:
4359 			case INTEGER:
4360 			case TYPE:
4361 			case READ_ONLY:
4362 			case DATABASE:
4363 			case DATEPART:
4364 			case PASSWORD:
4365 			case BINARY:
4366 			case HIDDEN_:
4367 			case MOD:
4368 			case PARTITION:
4369 			case PARTITIONS:
4370 			case TOP:
4371 			case ROW:
4372 			case ROWS:
4373 			case XOR:
4374 			case ALWAYS:
4375 			case ROLE:
4376 			case START:
4377 			case ALGORITHM:
4378 			case AUTO:
4379 			case BLOCKERS:
4380 			case CLUSTERED:
4381 			case NONCLUSTERED:
4382 			case COLUMNSTORE:
4383 			case CONTENT:
4384 			case YEARS:
4385 			case MONTHS:
4386 			case WEEKS:
4387 			case DAYS:
4388 			case MINUTES:
4389 			case DENY:
4390 			case DETERMINISTIC:
4391 			case DISTRIBUTION:
4392 			case DOCUMENT:
4393 			case DURABILITY:
4394 			case ENCRYPTED:
4395 			case FILESTREAM:
4396 			case FILETABLE:
4397 			case FILLFACTOR:
4398 			case FOLLOWING:
4399 			case HASH:
4400 			case HEAP:
4401 			case INBOUND:
4402 			case OUTBOUND:
4403 			case UNBOUNDED:
4404 			case INFINITE:
4405 			case LOGIN:
4406 			case MASKED:
4407 			case MAXDOP:
4408 			case MOVE:
4409 			case NOCHECK:
4410 			case OBJECT:
4411 			case OFF:
4412 			case ONLINE:
4413 			case OVER:
4414 			case PAGE:
4415 			case PAUSED:
4416 			case PERIOD:
4417 			case PERSISTED:
4418 			case PRECEDING:
4419 			case RANDOMIZED:
4420 			case RANGE:
4421 			case REBUILD:
4422 			case REPLICATE:
4423 			case REPLICATION:
4424 			case RESUMABLE:
4425 			case ROWGUIDCOL:
4426 			case SAVE:
4427 			case SELF:
4428 			case SPARSE:
4429 			case SWITCH:
4430 			case TRAN:
4431 			case TRANCOUNT:
4432 			case CONTROL:
4433 			case CONCAT:
4434 			case TAKE:
4435 			case OWNERSHIP:
4436 			case DEFINITION:
4437 			case APPLICATION:
4438 			case ASSEMBLY:
4439 			case SYMMETRIC:
4440 			case ASYMMETRIC:
4441 			case SERVER:
4442 			case RECEIVE:
4443 			case CHANGE:
4444 			case TRACE:
4445 			case TRACKING:
4446 			case RESOURCES:
4447 			case SETTINGS:
4448 			case STATE:
4449 			case AVAILABILITY:
4450 			case CREDENTIAL:
4451 			case ENDPOINT:
4452 			case EVENT:
4453 			case NOTIFICATION:
4454 			case LINKED:
4455 			case AUDIT:
4456 			case DDL:
4457 			case XML:
4458 			case IMPERSONATE:
4459 			case SECURABLES:
4460 			case AUTHENTICATE:
4461 			case EXTERNAL:
4462 			case ACCESS:
4463 			case ADMINISTER:
4464 			case BULK:
4465 			case OPERATIONS:
4466 			case UNSAFE:
4467 			case SHUTDOWN:
4468 			case SCOPED:
4469 			case CONFIGURATION:
4470 			case DATASPACE:
4471 			case SERVICE:
4472 			case CERTIFICATE:
4473 			case CONTRACT:
4474 			case ENCRYPTION:
4475 			case MASTER:
4476 			case DATA:
4477 			case SOURCE:
4478 			case FILE:
4479 			case FORMAT:
4480 			case LIBRARY:
4481 			case FULLTEXT:
4482 			case MASK:
4483 			case UNMASK:
4484 			case MESSAGE:
4485 			case REMOTE:
4486 			case BINDING:
4487 			case ROUTE:
4488 			case SECURITY:
4489 			case POLICY:
4490 			case AGGREGATE:
4491 			case QUEUE:
4492 			case RULE:
4493 			case SYNONYM:
4494 			case COLLECTION:
4495 			case SCRIPT:
4496 			case KILL:
4497 			case BACKUP:
4498 			case LOG:
4499 			case SHOWPLAN:
4500 			case SUBSCRIBE:
4501 			case QUERY:
4502 			case NOTIFICATIONS:
4503 			case CHECKPOINT:
4504 			case SEQUENCE:
4505 			case ABORT_AFTER_WAIT:
4506 			case ALLOW_PAGE_LOCKS:
4507 			case ALLOW_ROW_LOCKS:
4508 			case ALL_SPARSE_COLUMNS:
4509 			case BUCKET_COUNT:
4510 			case COLUMNSTORE_ARCHIVE:
4511 			case COLUMN_ENCRYPTION_KEY:
4512 			case COLUMN_SET:
4513 			case COMPRESSION_DELAY:
4514 			case DATABASE_DEAULT:
4515 			case DATA_COMPRESSION:
4516 			case DATA_CONSISTENCY_CHECK:
4517 			case ENCRYPTION_TYPE:
4518 			case SYSTEM_TIME:
4519 			case SYSTEM_VERSIONING:
4520 			case TEXTIMAGE_ON:
4521 			case WAIT_AT_LOW_PRIORITY:
4522 			case STATISTICS_INCREMENTAL:
4523 			case STATISTICS_NORECOMPUTE:
4524 			case ROUND_ROBIN:
4525 			case SCHEMA_AND_DATA:
4526 			case SCHEMA_ONLY:
4527 			case SORT_IN_TEMPDB:
4528 			case IGNORE_DUP_KEY:
4529 			case IMPLICIT_TRANSACTIONS:
4530 			case MAX_DURATION:
4531 			case MEMORY_OPTIMIZED:
4532 			case MIGRATION_STATE:
4533 			case PAD_INDEX:
4534 			case REMOTE_DATA_ARCHIVE:
4535 			case FILESTREAM_ON:
4536 			case FILETABLE_COLLATE_FILENAME:
4537 			case FILETABLE_DIRECTORY:
4538 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
4539 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
4540 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
4541 			case FILTER_PREDICATE:
4542 			case HISTORY_RETENTION_PERIOD:
4543 			case HISTORY_TABLE:
4544 			case LOCK_ESCALATION:
4545 			case DROP_EXISTING:
4546 			case ROW_NUMBER:
4547 			case FIRST:
4548 			case DATETIME2:
4549 			case OUTPUT:
4550 			case INSERTED:
4551 			case DELETED:
4552 			case FILENAME:
4553 			case MAXSIZE:
4554 			case FILEGROWTH:
4555 			case UNLIMITED:
4556 			case KB:
4557 			case MB:
4558 			case GB:
4559 			case TB:
4560 			case MEMORY_OPTIMIZED_DATA:
4561 			case FILEGROUP:
4562 			case NON_TRANSACTED_ACCESS:
4563 			case DB_CHAINING:
4564 			case TRUSTWORTHY:
4565 			case FORWARD_ONLY:
4566 			case KEYSET:
4567 			case FAST_FORWARD:
4568 			case SCROLL_LOCKS:
4569 			case OPTIMISTIC:
4570 			case TYPE_WARNING:
4571 			case SCHEMABINDING:
4572 			case CALLER:
4573 			case OWNER:
4574 			case SNAPSHOT:
4575 			case REPEATABLE:
4576 			case SERIALIZABLE:
4577 			case NATIVE_COMPILATION:
4578 			case VIEW_METADATA:
4579 			case INSTEAD:
4580 			case APPEND:
4581 			case INCREMENT:
4582 			case CACHE:
4583 			case MINVALUE:
4584 			case MAXVALUE:
4585 			case RESTART:
4586 			case LOB_COMPACTION:
4587 			case COMPRESS_ALL_ROW_GROUPS:
4588 			case REORGANIZE:
4589 			case RESUME:
4590 			case PAUSE:
4591 			case ABORT:
4592 			case ACCELERATED_DATABASE_RECOVERY:
4593 			case PERSISTENT_VERSION_STORE_FILEGROUP:
4594 			case IMMEDIATE:
4595 			case NO_WAIT:
4596 			case TARGET_RECOVERY_TIME:
4597 			case SECONDS:
4598 			case HONOR_BROKER_PRIORITY:
4599 			case ERROR_BROKER_CONVERSATIONS:
4600 			case NEW_BROKER:
4601 			case DISABLE_BROKER:
4602 			case ENABLE_BROKER:
4603 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
4604 			case READ_COMMITTED_SNAPSHOT:
4605 			case ALLOW_SNAPSHOT_ISOLATION:
4606 			case RECURSIVE_TRIGGERS:
4607 			case QUOTED_IDENTIFIER:
4608 			case NUMERIC_ROUNDABORT:
4609 			case CONCAT_NULL_YIELDS_NULL:
4610 			case COMPATIBILITY_LEVEL:
4611 			case ARITHABORT:
4612 			case ANSI_WARNINGS:
4613 			case ANSI_PADDING:
4614 			case ANSI_NULLS:
4615 			case ANSI_NULL_DEFAULT:
4616 			case PAGE_VERIFY:
4617 			case CHECKSUM:
4618 			case TORN_PAGE_DETECTION:
4619 			case BULK_LOGGED:
4620 			case RECOVERY:
4621 			case TOTAL_EXECUTION_CPU_TIME_MS:
4622 			case TOTAL_COMPILE_CPU_TIME_MS:
4623 			case STALE_CAPTURE_POLICY_THRESHOLD:
4624 			case EXECUTION_COUNT:
4625 			case QUERY_CAPTURE_POLICY:
4626 			case WAIT_STATS_CAPTURE_MODE:
4627 			case MAX_PLANS_PER_QUERY:
4628 			case QUERY_CAPTURE_MODE:
4629 			case SIZE_BASED_CLEANUP_MODE:
4630 			case INTERVAL_LENGTH_MINUTES:
4631 			case MAX_STORAGE_SIZE_MB:
4632 			case DATA_FLUSH_INTERVAL_SECONDS:
4633 			case CLEANUP_POLICY:
4634 			case CUSTOM:
4635 			case STALE_QUERY_THRESHOLD_DAYS:
4636 			case OPERATION_MODE:
4637 			case QUERY_STORE:
4638 			case CURSOR_DEFAULT:
4639 			case GLOBAL:
4640 			case CURSOR_CLOSE_ON_COMMIT:
4641 			case HOURS:
4642 			case CHANGE_RETENTION:
4643 			case AUTO_CLEANUP:
4644 			case CHANGE_TRACKING:
4645 			case AUTOMATIC_TUNING:
4646 			case FORCE_LAST_GOOD_PLAN:
4647 			case AUTO_UPDATE_STATISTICS_ASYNC:
4648 			case AUTO_UPDATE_STATISTICS:
4649 			case AUTO_SHRINK:
4650 			case AUTO_CREATE_STATISTICS:
4651 			case INCREMENTAL:
4652 			case AUTO_CLOSE:
4653 			case DATA_RETENTION:
4654 			case TEMPORAL_HISTORY_RETENTION:
4655 			case EDITION:
4656 			case MIXED_PAGE_ALLOCATION:
4657 			case DISABLED:
4658 			case ALLOWED:
4659 			case HADR:
4660 			case MULTI_USER:
4661 			case RESTRICTED_USER:
4662 			case SINGLE_USER:
4663 			case OFFLINE:
4664 			case EMERGENCY:
4665 			case SUSPEND:
4666 			case DATE_CORRELATION_OPTIMIZATION:
4667 			case ELASTIC_POOL:
4668 			case SERVICE_OBJECTIVE:
4669 			case DATABASE_NAME:
4670 			case ALLOW_CONNECTIONS:
4671 			case GEO:
4672 			case NAMED:
4673 			case DATEFIRST:
4674 			case BACKUP_STORAGE_REDUNDANCY:
4675 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
4676 			case SECONDARY:
4677 			case FAILOVER:
4678 			case DEFAULT_FULLTEXT_LANGUAGE:
4679 			case DEFAULT_LANGUAGE:
4680 			case INLINE:
4681 			case NESTED_TRIGGERS:
4682 			case TRANSFORM_NOISE_WORDS:
4683 			case TWO_DIGIT_YEAR_CUTOFF:
4684 			case PERSISTENT_LOG_BUFFER:
4685 			case DIRECTORY_NAME:
4686 			case DATEFORMAT:
4687 			case DELAYED_DURABILITY:
4688 			case AUTHORIZATION:
4689 			case TRANSFER:
4690 			case SEARCH:
4691 			case MEMBER:
4692 			case IDENTIFIER_:
4693 			case DELIMITED_IDENTIFIER_:
4694 				{
4695 				setState(1223);
4696 				name();
4697 				}
4698 				break;
4699 			case DOLLAR_:
4700 				{
4701 				setState(1224);
4702 				scriptVariableName();
4703 				}
4704 				break;
4705 			default:
4706 				throw new NoViableAltException(this);
4707 			}
4708 			}
4709 		}
4710 		catch (RecognitionException re) {
4711 			_localctx.exception = re;
4712 			_errHandler.reportError(this, re);
4713 			_errHandler.recover(this, re);
4714 		}
4715 		finally {
4716 			exitRule();
4717 		}
4718 		return _localctx;
4719 	}
4720 
4721 	public static class ScriptVariableNameContext extends ParserRuleContext {
4722 		public TerminalNode DOLLAR_() { return getToken(SQLServerStatementParser.DOLLAR_, 0); }
4723 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4724 		public NameContext name() {
4725 			return getRuleContext(NameContext.class,0);
4726 		}
4727 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4728 		public ScriptVariableNameContext(ParserRuleContext parent, int invokingState) {
4729 			super(parent, invokingState);
4730 		}
4731 		@Override public int getRuleIndex() { return RULE_scriptVariableName; }
4732 		@Override
4733 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4734 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitScriptVariableName(this);
4735 			else return visitor.visitChildren(this);
4736 		}
4737 	}
4738 
4739 	public final ScriptVariableNameContext scriptVariableName() throws RecognitionException {
4740 		ScriptVariableNameContext _localctx = new ScriptVariableNameContext(_ctx, getState());
4741 		enterRule(_localctx, 74, RULE_scriptVariableName);
4742 		try {
4743 			enterOuterAlt(_localctx, 1);
4744 			{
4745 			setState(1227);
4746 			match(DOLLAR_);
4747 			setState(1228);
4748 			match(LP_);
4749 			setState(1229);
4750 			name();
4751 			setState(1230);
4752 			match(RP_);
4753 			}
4754 		}
4755 		catch (RecognitionException re) {
4756 			_localctx.exception = re;
4757 			_errHandler.reportError(this, re);
4758 			_errHandler.recover(this, re);
4759 		}
4760 		finally {
4761 			exitRule();
4762 		}
4763 		return _localctx;
4764 	}
4765 
4766 	public static class OwnerContext extends ParserRuleContext {
4767 		public IdentifierContext identifier() {
4768 			return getRuleContext(IdentifierContext.class,0);
4769 		}
4770 		public OwnerContext(ParserRuleContext parent, int invokingState) {
4771 			super(parent, invokingState);
4772 		}
4773 		@Override public int getRuleIndex() { return RULE_owner; }
4774 		@Override
4775 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4776 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOwner(this);
4777 			else return visitor.visitChildren(this);
4778 		}
4779 	}
4780 
4781 	public final OwnerContext owner() throws RecognitionException {
4782 		OwnerContext _localctx = new OwnerContext(_ctx, getState());
4783 		enterRule(_localctx, 76, RULE_owner);
4784 		try {
4785 			enterOuterAlt(_localctx, 1);
4786 			{
4787 			setState(1232);
4788 			identifier();
4789 			}
4790 		}
4791 		catch (RecognitionException re) {
4792 			_localctx.exception = re;
4793 			_errHandler.reportError(this, re);
4794 			_errHandler.recover(this, re);
4795 		}
4796 		finally {
4797 			exitRule();
4798 		}
4799 		return _localctx;
4800 	}
4801 
4802 	public static class NameContext extends ParserRuleContext {
4803 		public IdentifierContext identifier() {
4804 			return getRuleContext(IdentifierContext.class,0);
4805 		}
4806 		public NameContext(ParserRuleContext parent, int invokingState) {
4807 			super(parent, invokingState);
4808 		}
4809 		@Override public int getRuleIndex() { return RULE_name; }
4810 		@Override
4811 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4812 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitName(this);
4813 			else return visitor.visitChildren(this);
4814 		}
4815 	}
4816 
4817 	public final NameContext name() throws RecognitionException {
4818 		NameContext _localctx = new NameContext(_ctx, getState());
4819 		enterRule(_localctx, 78, RULE_name);
4820 		try {
4821 			enterOuterAlt(_localctx, 1);
4822 			{
4823 			setState(1234);
4824 			identifier();
4825 			}
4826 		}
4827 		catch (RecognitionException re) {
4828 			_localctx.exception = re;
4829 			_errHandler.reportError(this, re);
4830 			_errHandler.recover(this, re);
4831 		}
4832 		finally {
4833 			exitRule();
4834 		}
4835 		return _localctx;
4836 	}
4837 
4838 	public static class ColumnNamesContext extends ParserRuleContext {
4839 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4840 		public List<ColumnNameContext> columnName() {
4841 			return getRuleContexts(ColumnNameContext.class);
4842 		}
4843 		public ColumnNameContext columnName(int i) {
4844 			return getRuleContext(ColumnNameContext.class,i);
4845 		}
4846 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4847 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
4848 		public TerminalNode COMMA_(int i) {
4849 			return getToken(SQLServerStatementParser.COMMA_, i);
4850 		}
4851 		public ColumnNamesContext(ParserRuleContext parent, int invokingState) {
4852 			super(parent, invokingState);
4853 		}
4854 		@Override public int getRuleIndex() { return RULE_columnNames; }
4855 		@Override
4856 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4857 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNames(this);
4858 			else return visitor.visitChildren(this);
4859 		}
4860 	}
4861 
4862 	public final ColumnNamesContext columnNames() throws RecognitionException {
4863 		ColumnNamesContext _localctx = new ColumnNamesContext(_ctx, getState());
4864 		enterRule(_localctx, 80, RULE_columnNames);
4865 		int _la;
4866 		try {
4867 			enterOuterAlt(_localctx, 1);
4868 			{
4869 			setState(1236);
4870 			match(LP_);
4871 			setState(1237);
4872 			columnName();
4873 			setState(1242);
4874 			_errHandler.sync(this);
4875 			_la = _input.LA(1);
4876 			while (_la==COMMA_) {
4877 				{
4878 				{
4879 				setState(1238);
4880 				match(COMMA_);
4881 				setState(1239);
4882 				columnName();
4883 				}
4884 				}
4885 				setState(1244);
4886 				_errHandler.sync(this);
4887 				_la = _input.LA(1);
4888 			}
4889 			setState(1245);
4890 			match(RP_);
4891 			}
4892 		}
4893 		catch (RecognitionException re) {
4894 			_localctx.exception = re;
4895 			_errHandler.reportError(this, re);
4896 			_errHandler.recover(this, re);
4897 		}
4898 		finally {
4899 			exitRule();
4900 		}
4901 		return _localctx;
4902 	}
4903 
4904 	public static class ColumnNamesWithSortContext extends ParserRuleContext {
4905 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4906 		public List<ColumnNameWithSortContext> columnNameWithSort() {
4907 			return getRuleContexts(ColumnNameWithSortContext.class);
4908 		}
4909 		public ColumnNameWithSortContext columnNameWithSort(int i) {
4910 			return getRuleContext(ColumnNameWithSortContext.class,i);
4911 		}
4912 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4913 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
4914 		public TerminalNode COMMA_(int i) {
4915 			return getToken(SQLServerStatementParser.COMMA_, i);
4916 		}
4917 		public ColumnNamesWithSortContext(ParserRuleContext parent, int invokingState) {
4918 			super(parent, invokingState);
4919 		}
4920 		@Override public int getRuleIndex() { return RULE_columnNamesWithSort; }
4921 		@Override
4922 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4923 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNamesWithSort(this);
4924 			else return visitor.visitChildren(this);
4925 		}
4926 	}
4927 
4928 	public final ColumnNamesWithSortContext columnNamesWithSort() throws RecognitionException {
4929 		ColumnNamesWithSortContext _localctx = new ColumnNamesWithSortContext(_ctx, getState());
4930 		enterRule(_localctx, 82, RULE_columnNamesWithSort);
4931 		int _la;
4932 		try {
4933 			enterOuterAlt(_localctx, 1);
4934 			{
4935 			setState(1247);
4936 			match(LP_);
4937 			setState(1248);
4938 			columnNameWithSort();
4939 			setState(1253);
4940 			_errHandler.sync(this);
4941 			_la = _input.LA(1);
4942 			while (_la==COMMA_) {
4943 				{
4944 				{
4945 				setState(1249);
4946 				match(COMMA_);
4947 				setState(1250);
4948 				columnNameWithSort();
4949 				}
4950 				}
4951 				setState(1255);
4952 				_errHandler.sync(this);
4953 				_la = _input.LA(1);
4954 			}
4955 			setState(1256);
4956 			match(RP_);
4957 			}
4958 		}
4959 		catch (RecognitionException re) {
4960 			_localctx.exception = re;
4961 			_errHandler.reportError(this, re);
4962 			_errHandler.recover(this, re);
4963 		}
4964 		finally {
4965 			exitRule();
4966 		}
4967 		return _localctx;
4968 	}
4969 
4970 	public static class TableNamesContext extends ParserRuleContext {
4971 		public List<TableNameContext> tableName() {
4972 			return getRuleContexts(TableNameContext.class);
4973 		}
4974 		public TableNameContext tableName(int i) {
4975 			return getRuleContext(TableNameContext.class,i);
4976 		}
4977 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4978 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
4979 		public TerminalNode COMMA_(int i) {
4980 			return getToken(SQLServerStatementParser.COMMA_, i);
4981 		}
4982 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4983 		public TableNamesContext(ParserRuleContext parent, int invokingState) {
4984 			super(parent, invokingState);
4985 		}
4986 		@Override public int getRuleIndex() { return RULE_tableNames; }
4987 		@Override
4988 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4989 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableNames(this);
4990 			else return visitor.visitChildren(this);
4991 		}
4992 	}
4993 
4994 	public final TableNamesContext tableNames() throws RecognitionException {
4995 		TableNamesContext _localctx = new TableNamesContext(_ctx, getState());
4996 		enterRule(_localctx, 84, RULE_tableNames);
4997 		int _la;
4998 		try {
4999 			enterOuterAlt(_localctx, 1);
5000 			{
5001 			setState(1259);
5002 			_errHandler.sync(this);
5003 			_la = _input.LA(1);
5004 			if (_la==LP_) {
5005 				{
5006 				setState(1258);
5007 				match(LP_);
5008 				}
5009 			}
5010 
5011 			setState(1261);
5012 			tableName();
5013 			setState(1266);
5014 			_errHandler.sync(this);
5015 			_la = _input.LA(1);
5016 			while (_la==COMMA_) {
5017 				{
5018 				{
5019 				setState(1262);
5020 				match(COMMA_);
5021 				setState(1263);
5022 				tableName();
5023 				}
5024 				}
5025 				setState(1268);
5026 				_errHandler.sync(this);
5027 				_la = _input.LA(1);
5028 			}
5029 			setState(1270);
5030 			_errHandler.sync(this);
5031 			_la = _input.LA(1);
5032 			if (_la==RP_) {
5033 				{
5034 				setState(1269);
5035 				match(RP_);
5036 				}
5037 			}
5038 
5039 			}
5040 		}
5041 		catch (RecognitionException re) {
5042 			_localctx.exception = re;
5043 			_errHandler.reportError(this, re);
5044 			_errHandler.recover(this, re);
5045 		}
5046 		finally {
5047 			exitRule();
5048 		}
5049 		return _localctx;
5050 	}
5051 
5052 	public static class IndexNameContext extends ParserRuleContext {
5053 		public IdentifierContext identifier() {
5054 			return getRuleContext(IdentifierContext.class,0);
5055 		}
5056 		public IndexNameContext(ParserRuleContext parent, int invokingState) {
5057 			super(parent, invokingState);
5058 		}
5059 		@Override public int getRuleIndex() { return RULE_indexName; }
5060 		@Override
5061 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5062 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexName(this);
5063 			else return visitor.visitChildren(this);
5064 		}
5065 	}
5066 
5067 	public final IndexNameContext indexName() throws RecognitionException {
5068 		IndexNameContext _localctx = new IndexNameContext(_ctx, getState());
5069 		enterRule(_localctx, 86, RULE_indexName);
5070 		try {
5071 			enterOuterAlt(_localctx, 1);
5072 			{
5073 			setState(1272);
5074 			identifier();
5075 			}
5076 		}
5077 		catch (RecognitionException re) {
5078 			_localctx.exception = re;
5079 			_errHandler.reportError(this, re);
5080 			_errHandler.recover(this, re);
5081 		}
5082 		finally {
5083 			exitRule();
5084 		}
5085 		return _localctx;
5086 	}
5087 
5088 	public static class ConstraintNameContext extends ParserRuleContext {
5089 		public IdentifierContext identifier() {
5090 			return getRuleContext(IdentifierContext.class,0);
5091 		}
5092 		public ConstraintNameContext(ParserRuleContext parent, int invokingState) {
5093 			super(parent, invokingState);
5094 		}
5095 		@Override public int getRuleIndex() { return RULE_constraintName; }
5096 		@Override
5097 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5098 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConstraintName(this);
5099 			else return visitor.visitChildren(this);
5100 		}
5101 	}
5102 
5103 	public final ConstraintNameContext constraintName() throws RecognitionException {
5104 		ConstraintNameContext _localctx = new ConstraintNameContext(_ctx, getState());
5105 		enterRule(_localctx, 88, RULE_constraintName);
5106 		try {
5107 			enterOuterAlt(_localctx, 1);
5108 			{
5109 			setState(1274);
5110 			identifier();
5111 			}
5112 		}
5113 		catch (RecognitionException re) {
5114 			_localctx.exception = re;
5115 			_errHandler.reportError(this, re);
5116 			_errHandler.recover(this, re);
5117 		}
5118 		finally {
5119 			exitRule();
5120 		}
5121 		return _localctx;
5122 	}
5123 
5124 	public static class CollationNameContext extends ParserRuleContext {
5125 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
5126 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
5127 		public CollationNameContext(ParserRuleContext parent, int invokingState) {
5128 			super(parent, invokingState);
5129 		}
5130 		@Override public int getRuleIndex() { return RULE_collationName; }
5131 		@Override
5132 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5133 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCollationName(this);
5134 			else return visitor.visitChildren(this);
5135 		}
5136 	}
5137 
5138 	public final CollationNameContext collationName() throws RecognitionException {
5139 		CollationNameContext _localctx = new CollationNameContext(_ctx, getState());
5140 		enterRule(_localctx, 90, RULE_collationName);
5141 		int _la;
5142 		try {
5143 			enterOuterAlt(_localctx, 1);
5144 			{
5145 			setState(1276);
5146 			_la = _input.LA(1);
5147 			if ( !(_la==IDENTIFIER_ || _la==STRING_) ) {
5148 			_errHandler.recoverInline(this);
5149 			}
5150 			else {
5151 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5152 				_errHandler.reportMatch(this);
5153 				consume();
5154 			}
5155 			}
5156 		}
5157 		catch (RecognitionException re) {
5158 			_localctx.exception = re;
5159 			_errHandler.reportError(this, re);
5160 			_errHandler.recover(this, re);
5161 		}
5162 		finally {
5163 			exitRule();
5164 		}
5165 		return _localctx;
5166 	}
5167 
5168 	public static class AliasContext extends ParserRuleContext {
5169 		public IdentifierContext identifier() {
5170 			return getRuleContext(IdentifierContext.class,0);
5171 		}
5172 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
5173 		public AliasContext(ParserRuleContext parent, int invokingState) {
5174 			super(parent, invokingState);
5175 		}
5176 		@Override public int getRuleIndex() { return RULE_alias; }
5177 		@Override
5178 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5179 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlias(this);
5180 			else return visitor.visitChildren(this);
5181 		}
5182 	}
5183 
5184 	public final AliasContext alias() throws RecognitionException {
5185 		AliasContext _localctx = new AliasContext(_ctx, getState());
5186 		enterRule(_localctx, 92, RULE_alias);
5187 		try {
5188 			setState(1280);
5189 			_errHandler.sync(this);
5190 			switch (_input.LA(1)) {
5191 			case TRUNCATE:
5192 			case SCHEMA:
5193 			case FUNCTION:
5194 			case TRIGGER:
5195 			case CAST:
5196 			case GROUP:
5197 			case LIMIT:
5198 			case OFFSET:
5199 			case SAVEPOINT:
5200 			case BOOLEAN:
5201 			case ARRAY:
5202 			case DATE:
5203 			case LOCALTIME:
5204 			case LOCALTIMESTAMP:
5205 			case QUARTER:
5206 			case WEEK:
5207 			case DAY:
5208 			case MICROSECOND:
5209 			case MAX:
5210 			case MIN:
5211 			case SUM:
5212 			case COUNT:
5213 			case AVG:
5214 			case ENABLE:
5215 			case DISABLE:
5216 			case INSTANCE:
5217 			case DO:
5218 			case DEFINER:
5219 			case SQL:
5220 			case CASCADED:
5221 			case LOCAL:
5222 			case NEXT:
5223 			case NAME:
5224 			case INTEGER:
5225 			case TYPE:
5226 			case READ_ONLY:
5227 			case DATABASE:
5228 			case DATEPART:
5229 			case PASSWORD:
5230 			case BINARY:
5231 			case HIDDEN_:
5232 			case MOD:
5233 			case PARTITION:
5234 			case PARTITIONS:
5235 			case TOP:
5236 			case ROW:
5237 			case ROWS:
5238 			case XOR:
5239 			case ALWAYS:
5240 			case ROLE:
5241 			case START:
5242 			case ALGORITHM:
5243 			case AUTO:
5244 			case BLOCKERS:
5245 			case CLUSTERED:
5246 			case NONCLUSTERED:
5247 			case COLUMNSTORE:
5248 			case CONTENT:
5249 			case YEARS:
5250 			case MONTHS:
5251 			case WEEKS:
5252 			case DAYS:
5253 			case MINUTES:
5254 			case DENY:
5255 			case DETERMINISTIC:
5256 			case DISTRIBUTION:
5257 			case DOCUMENT:
5258 			case DURABILITY:
5259 			case ENCRYPTED:
5260 			case FILESTREAM:
5261 			case FILETABLE:
5262 			case FILLFACTOR:
5263 			case FOLLOWING:
5264 			case HASH:
5265 			case HEAP:
5266 			case INBOUND:
5267 			case OUTBOUND:
5268 			case UNBOUNDED:
5269 			case INFINITE:
5270 			case LOGIN:
5271 			case MASKED:
5272 			case MAXDOP:
5273 			case MOVE:
5274 			case NOCHECK:
5275 			case OBJECT:
5276 			case OFF:
5277 			case ONLINE:
5278 			case OVER:
5279 			case PAGE:
5280 			case PAUSED:
5281 			case PERIOD:
5282 			case PERSISTED:
5283 			case PRECEDING:
5284 			case RANDOMIZED:
5285 			case RANGE:
5286 			case REBUILD:
5287 			case REPLICATE:
5288 			case REPLICATION:
5289 			case RESUMABLE:
5290 			case ROWGUIDCOL:
5291 			case SAVE:
5292 			case SELF:
5293 			case SPARSE:
5294 			case SWITCH:
5295 			case TRAN:
5296 			case TRANCOUNT:
5297 			case CONTROL:
5298 			case CONCAT:
5299 			case TAKE:
5300 			case OWNERSHIP:
5301 			case DEFINITION:
5302 			case APPLICATION:
5303 			case ASSEMBLY:
5304 			case SYMMETRIC:
5305 			case ASYMMETRIC:
5306 			case SERVER:
5307 			case RECEIVE:
5308 			case CHANGE:
5309 			case TRACE:
5310 			case TRACKING:
5311 			case RESOURCES:
5312 			case SETTINGS:
5313 			case STATE:
5314 			case AVAILABILITY:
5315 			case CREDENTIAL:
5316 			case ENDPOINT:
5317 			case EVENT:
5318 			case NOTIFICATION:
5319 			case LINKED:
5320 			case AUDIT:
5321 			case DDL:
5322 			case XML:
5323 			case IMPERSONATE:
5324 			case SECURABLES:
5325 			case AUTHENTICATE:
5326 			case EXTERNAL:
5327 			case ACCESS:
5328 			case ADMINISTER:
5329 			case BULK:
5330 			case OPERATIONS:
5331 			case UNSAFE:
5332 			case SHUTDOWN:
5333 			case SCOPED:
5334 			case CONFIGURATION:
5335 			case DATASPACE:
5336 			case SERVICE:
5337 			case CERTIFICATE:
5338 			case CONTRACT:
5339 			case ENCRYPTION:
5340 			case MASTER:
5341 			case DATA:
5342 			case SOURCE:
5343 			case FILE:
5344 			case FORMAT:
5345 			case LIBRARY:
5346 			case FULLTEXT:
5347 			case MASK:
5348 			case UNMASK:
5349 			case MESSAGE:
5350 			case REMOTE:
5351 			case BINDING:
5352 			case ROUTE:
5353 			case SECURITY:
5354 			case POLICY:
5355 			case AGGREGATE:
5356 			case QUEUE:
5357 			case RULE:
5358 			case SYNONYM:
5359 			case COLLECTION:
5360 			case SCRIPT:
5361 			case KILL:
5362 			case BACKUP:
5363 			case LOG:
5364 			case SHOWPLAN:
5365 			case SUBSCRIBE:
5366 			case QUERY:
5367 			case NOTIFICATIONS:
5368 			case CHECKPOINT:
5369 			case SEQUENCE:
5370 			case ABORT_AFTER_WAIT:
5371 			case ALLOW_PAGE_LOCKS:
5372 			case ALLOW_ROW_LOCKS:
5373 			case ALL_SPARSE_COLUMNS:
5374 			case BUCKET_COUNT:
5375 			case COLUMNSTORE_ARCHIVE:
5376 			case COLUMN_ENCRYPTION_KEY:
5377 			case COLUMN_SET:
5378 			case COMPRESSION_DELAY:
5379 			case DATABASE_DEAULT:
5380 			case DATA_COMPRESSION:
5381 			case DATA_CONSISTENCY_CHECK:
5382 			case ENCRYPTION_TYPE:
5383 			case SYSTEM_TIME:
5384 			case SYSTEM_VERSIONING:
5385 			case TEXTIMAGE_ON:
5386 			case WAIT_AT_LOW_PRIORITY:
5387 			case STATISTICS_INCREMENTAL:
5388 			case STATISTICS_NORECOMPUTE:
5389 			case ROUND_ROBIN:
5390 			case SCHEMA_AND_DATA:
5391 			case SCHEMA_ONLY:
5392 			case SORT_IN_TEMPDB:
5393 			case IGNORE_DUP_KEY:
5394 			case IMPLICIT_TRANSACTIONS:
5395 			case MAX_DURATION:
5396 			case MEMORY_OPTIMIZED:
5397 			case MIGRATION_STATE:
5398 			case PAD_INDEX:
5399 			case REMOTE_DATA_ARCHIVE:
5400 			case FILESTREAM_ON:
5401 			case FILETABLE_COLLATE_FILENAME:
5402 			case FILETABLE_DIRECTORY:
5403 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
5404 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
5405 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
5406 			case FILTER_PREDICATE:
5407 			case HISTORY_RETENTION_PERIOD:
5408 			case HISTORY_TABLE:
5409 			case LOCK_ESCALATION:
5410 			case DROP_EXISTING:
5411 			case ROW_NUMBER:
5412 			case FIRST:
5413 			case DATETIME2:
5414 			case OUTPUT:
5415 			case INSERTED:
5416 			case DELETED:
5417 			case FILENAME:
5418 			case MAXSIZE:
5419 			case FILEGROWTH:
5420 			case UNLIMITED:
5421 			case KB:
5422 			case MB:
5423 			case GB:
5424 			case TB:
5425 			case MEMORY_OPTIMIZED_DATA:
5426 			case FILEGROUP:
5427 			case NON_TRANSACTED_ACCESS:
5428 			case DB_CHAINING:
5429 			case TRUSTWORTHY:
5430 			case FORWARD_ONLY:
5431 			case KEYSET:
5432 			case FAST_FORWARD:
5433 			case SCROLL_LOCKS:
5434 			case OPTIMISTIC:
5435 			case TYPE_WARNING:
5436 			case SCHEMABINDING:
5437 			case CALLER:
5438 			case OWNER:
5439 			case SNAPSHOT:
5440 			case REPEATABLE:
5441 			case SERIALIZABLE:
5442 			case NATIVE_COMPILATION:
5443 			case VIEW_METADATA:
5444 			case INSTEAD:
5445 			case APPEND:
5446 			case INCREMENT:
5447 			case CACHE:
5448 			case MINVALUE:
5449 			case MAXVALUE:
5450 			case RESTART:
5451 			case LOB_COMPACTION:
5452 			case COMPRESS_ALL_ROW_GROUPS:
5453 			case REORGANIZE:
5454 			case RESUME:
5455 			case PAUSE:
5456 			case ABORT:
5457 			case ACCELERATED_DATABASE_RECOVERY:
5458 			case PERSISTENT_VERSION_STORE_FILEGROUP:
5459 			case IMMEDIATE:
5460 			case NO_WAIT:
5461 			case TARGET_RECOVERY_TIME:
5462 			case SECONDS:
5463 			case HONOR_BROKER_PRIORITY:
5464 			case ERROR_BROKER_CONVERSATIONS:
5465 			case NEW_BROKER:
5466 			case DISABLE_BROKER:
5467 			case ENABLE_BROKER:
5468 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
5469 			case READ_COMMITTED_SNAPSHOT:
5470 			case ALLOW_SNAPSHOT_ISOLATION:
5471 			case RECURSIVE_TRIGGERS:
5472 			case QUOTED_IDENTIFIER:
5473 			case NUMERIC_ROUNDABORT:
5474 			case CONCAT_NULL_YIELDS_NULL:
5475 			case COMPATIBILITY_LEVEL:
5476 			case ARITHABORT:
5477 			case ANSI_WARNINGS:
5478 			case ANSI_PADDING:
5479 			case ANSI_NULLS:
5480 			case ANSI_NULL_DEFAULT:
5481 			case PAGE_VERIFY:
5482 			case CHECKSUM:
5483 			case TORN_PAGE_DETECTION:
5484 			case BULK_LOGGED:
5485 			case RECOVERY:
5486 			case TOTAL_EXECUTION_CPU_TIME_MS:
5487 			case TOTAL_COMPILE_CPU_TIME_MS:
5488 			case STALE_CAPTURE_POLICY_THRESHOLD:
5489 			case EXECUTION_COUNT:
5490 			case QUERY_CAPTURE_POLICY:
5491 			case WAIT_STATS_CAPTURE_MODE:
5492 			case MAX_PLANS_PER_QUERY:
5493 			case QUERY_CAPTURE_MODE:
5494 			case SIZE_BASED_CLEANUP_MODE:
5495 			case INTERVAL_LENGTH_MINUTES:
5496 			case MAX_STORAGE_SIZE_MB:
5497 			case DATA_FLUSH_INTERVAL_SECONDS:
5498 			case CLEANUP_POLICY:
5499 			case CUSTOM:
5500 			case STALE_QUERY_THRESHOLD_DAYS:
5501 			case OPERATION_MODE:
5502 			case QUERY_STORE:
5503 			case CURSOR_DEFAULT:
5504 			case GLOBAL:
5505 			case CURSOR_CLOSE_ON_COMMIT:
5506 			case HOURS:
5507 			case CHANGE_RETENTION:
5508 			case AUTO_CLEANUP:
5509 			case CHANGE_TRACKING:
5510 			case AUTOMATIC_TUNING:
5511 			case FORCE_LAST_GOOD_PLAN:
5512 			case AUTO_UPDATE_STATISTICS_ASYNC:
5513 			case AUTO_UPDATE_STATISTICS:
5514 			case AUTO_SHRINK:
5515 			case AUTO_CREATE_STATISTICS:
5516 			case INCREMENTAL:
5517 			case AUTO_CLOSE:
5518 			case DATA_RETENTION:
5519 			case TEMPORAL_HISTORY_RETENTION:
5520 			case EDITION:
5521 			case MIXED_PAGE_ALLOCATION:
5522 			case DISABLED:
5523 			case ALLOWED:
5524 			case HADR:
5525 			case MULTI_USER:
5526 			case RESTRICTED_USER:
5527 			case SINGLE_USER:
5528 			case OFFLINE:
5529 			case EMERGENCY:
5530 			case SUSPEND:
5531 			case DATE_CORRELATION_OPTIMIZATION:
5532 			case ELASTIC_POOL:
5533 			case SERVICE_OBJECTIVE:
5534 			case DATABASE_NAME:
5535 			case ALLOW_CONNECTIONS:
5536 			case GEO:
5537 			case NAMED:
5538 			case DATEFIRST:
5539 			case BACKUP_STORAGE_REDUNDANCY:
5540 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
5541 			case SECONDARY:
5542 			case FAILOVER:
5543 			case DEFAULT_FULLTEXT_LANGUAGE:
5544 			case DEFAULT_LANGUAGE:
5545 			case INLINE:
5546 			case NESTED_TRIGGERS:
5547 			case TRANSFORM_NOISE_WORDS:
5548 			case TWO_DIGIT_YEAR_CUTOFF:
5549 			case PERSISTENT_LOG_BUFFER:
5550 			case DIRECTORY_NAME:
5551 			case DATEFORMAT:
5552 			case DELAYED_DURABILITY:
5553 			case AUTHORIZATION:
5554 			case TRANSFER:
5555 			case SEARCH:
5556 			case MEMBER:
5557 			case IDENTIFIER_:
5558 			case DELIMITED_IDENTIFIER_:
5559 				enterOuterAlt(_localctx, 1);
5560 				{
5561 				setState(1278);
5562 				identifier();
5563 				}
5564 				break;
5565 			case STRING_:
5566 				enterOuterAlt(_localctx, 2);
5567 				{
5568 				setState(1279);
5569 				match(STRING_);
5570 				}
5571 				break;
5572 			default:
5573 				throw new NoViableAltException(this);
5574 			}
5575 		}
5576 		catch (RecognitionException re) {
5577 			_localctx.exception = re;
5578 			_errHandler.reportError(this, re);
5579 			_errHandler.recover(this, re);
5580 		}
5581 		finally {
5582 			exitRule();
5583 		}
5584 		return _localctx;
5585 	}
5586 
5587 	public static class DataTypeLengthContext extends ParserRuleContext {
5588 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5589 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5590 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
5591 		public TerminalNode NUMBER_(int i) {
5592 			return getToken(SQLServerStatementParser.NUMBER_, i);
5593 		}
5594 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
5595 		public DataTypeLengthContext(ParserRuleContext parent, int invokingState) {
5596 			super(parent, invokingState);
5597 		}
5598 		@Override public int getRuleIndex() { return RULE_dataTypeLength; }
5599 		@Override
5600 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5601 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataTypeLength(this);
5602 			else return visitor.visitChildren(this);
5603 		}
5604 	}
5605 
5606 	public final DataTypeLengthContext dataTypeLength() throws RecognitionException {
5607 		DataTypeLengthContext _localctx = new DataTypeLengthContext(_ctx, getState());
5608 		enterRule(_localctx, 94, RULE_dataTypeLength);
5609 		int _la;
5610 		try {
5611 			enterOuterAlt(_localctx, 1);
5612 			{
5613 			setState(1282);
5614 			match(LP_);
5615 			setState(1288);
5616 			_errHandler.sync(this);
5617 			_la = _input.LA(1);
5618 			if (_la==NUMBER_) {
5619 				{
5620 				setState(1283);
5621 				match(NUMBER_);
5622 				setState(1286);
5623 				_errHandler.sync(this);
5624 				_la = _input.LA(1);
5625 				if (_la==COMMA_) {
5626 					{
5627 					setState(1284);
5628 					match(COMMA_);
5629 					setState(1285);
5630 					match(NUMBER_);
5631 					}
5632 				}
5633 
5634 				}
5635 			}
5636 
5637 			setState(1290);
5638 			match(RP_);
5639 			}
5640 		}
5641 		catch (RecognitionException re) {
5642 			_localctx.exception = re;
5643 			_errHandler.reportError(this, re);
5644 			_errHandler.recover(this, re);
5645 		}
5646 		finally {
5647 			exitRule();
5648 		}
5649 		return _localctx;
5650 	}
5651 
5652 	public static class PrimaryKeyContext extends ParserRuleContext {
5653 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
5654 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
5655 		public PrimaryKeyContext(ParserRuleContext parent, int invokingState) {
5656 			super(parent, invokingState);
5657 		}
5658 		@Override public int getRuleIndex() { return RULE_primaryKey; }
5659 		@Override
5660 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5661 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKey(this);
5662 			else return visitor.visitChildren(this);
5663 		}
5664 	}
5665 
5666 	public final PrimaryKeyContext primaryKey() throws RecognitionException {
5667 		PrimaryKeyContext _localctx = new PrimaryKeyContext(_ctx, getState());
5668 		enterRule(_localctx, 96, RULE_primaryKey);
5669 		int _la;
5670 		try {
5671 			enterOuterAlt(_localctx, 1);
5672 			{
5673 			setState(1293);
5674 			_errHandler.sync(this);
5675 			_la = _input.LA(1);
5676 			if (_la==PRIMARY) {
5677 				{
5678 				setState(1292);
5679 				match(PRIMARY);
5680 				}
5681 			}
5682 
5683 			setState(1295);
5684 			match(KEY);
5685 			}
5686 		}
5687 		catch (RecognitionException re) {
5688 			_localctx.exception = re;
5689 			_errHandler.reportError(this, re);
5690 			_errHandler.recover(this, re);
5691 		}
5692 		finally {
5693 			exitRule();
5694 		}
5695 		return _localctx;
5696 	}
5697 
5698 	public static class ExprContext extends ParserRuleContext {
5699 		public NotOperatorContext notOperator() {
5700 			return getRuleContext(NotOperatorContext.class,0);
5701 		}
5702 		public List<ExprContext> expr() {
5703 			return getRuleContexts(ExprContext.class);
5704 		}
5705 		public ExprContext expr(int i) {
5706 			return getRuleContext(ExprContext.class,i);
5707 		}
5708 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5709 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5710 		public BooleanPrimaryContext booleanPrimary() {
5711 			return getRuleContext(BooleanPrimaryContext.class,0);
5712 		}
5713 		public AndOperatorContext andOperator() {
5714 			return getRuleContext(AndOperatorContext.class,0);
5715 		}
5716 		public OrOperatorContext orOperator() {
5717 			return getRuleContext(OrOperatorContext.class,0);
5718 		}
5719 		public ExprContext(ParserRuleContext parent, int invokingState) {
5720 			super(parent, invokingState);
5721 		}
5722 		@Override public int getRuleIndex() { return RULE_expr; }
5723 		@Override
5724 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5725 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExpr(this);
5726 			else return visitor.visitChildren(this);
5727 		}
5728 	}
5729 
5730 	public final ExprContext expr() throws RecognitionException {
5731 		return expr(0);
5732 	}
5733 
5734 	private ExprContext expr(int _p) throws RecognitionException {
5735 		ParserRuleContext _parentctx = _ctx;
5736 		int _parentState = getState();
5737 		ExprContext _localctx = new ExprContext(_ctx, _parentState);
5738 		ExprContext _prevctx = _localctx;
5739 		int _startState = 98;
5740 		enterRecursionRule(_localctx, 98, RULE_expr, _p);
5741 		try {
5742 			int _alt;
5743 			enterOuterAlt(_localctx, 1);
5744 			{
5745 			setState(1306);
5746 			_errHandler.sync(this);
5747 			switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) {
5748 			case 1:
5749 				{
5750 				setState(1298);
5751 				notOperator();
5752 				setState(1299);
5753 				expr(3);
5754 				}
5755 				break;
5756 			case 2:
5757 				{
5758 				setState(1301);
5759 				match(LP_);
5760 				setState(1302);
5761 				expr(0);
5762 				setState(1303);
5763 				match(RP_);
5764 				}
5765 				break;
5766 			case 3:
5767 				{
5768 				setState(1305);
5769 				booleanPrimary(0);
5770 				}
5771 				break;
5772 			}
5773 			_ctx.stop = _input.LT(-1);
5774 			setState(1318);
5775 			_errHandler.sync(this);
5776 			_alt = getInterpreter().adaptivePredict(_input,43,_ctx);
5777 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
5778 				if ( _alt==1 ) {
5779 					if ( _parseListeners!=null ) triggerExitRuleEvent();
5780 					_prevctx = _localctx;
5781 					{
5782 					setState(1316);
5783 					_errHandler.sync(this);
5784 					switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
5785 					case 1:
5786 						{
5787 						_localctx = new ExprContext(_parentctx, _parentState);
5788 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5789 						setState(1308);
5790 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
5791 						setState(1309);
5792 						andOperator();
5793 						setState(1310);
5794 						expr(6);
5795 						}
5796 						break;
5797 					case 2:
5798 						{
5799 						_localctx = new ExprContext(_parentctx, _parentState);
5800 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5801 						setState(1312);
5802 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
5803 						setState(1313);
5804 						orOperator();
5805 						setState(1314);
5806 						expr(5);
5807 						}
5808 						break;
5809 					}
5810 					} 
5811 				}
5812 				setState(1320);
5813 				_errHandler.sync(this);
5814 				_alt = getInterpreter().adaptivePredict(_input,43,_ctx);
5815 			}
5816 			}
5817 		}
5818 		catch (RecognitionException re) {
5819 			_localctx.exception = re;
5820 			_errHandler.reportError(this, re);
5821 			_errHandler.recover(this, re);
5822 		}
5823 		finally {
5824 			unrollRecursionContexts(_parentctx);
5825 		}
5826 		return _localctx;
5827 	}
5828 
5829 	public static class AndOperatorContext extends ParserRuleContext {
5830 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
5831 		public TerminalNode AND_() { return getToken(SQLServerStatementParser.AND_, 0); }
5832 		public AndOperatorContext(ParserRuleContext parent, int invokingState) {
5833 			super(parent, invokingState);
5834 		}
5835 		@Override public int getRuleIndex() { return RULE_andOperator; }
5836 		@Override
5837 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5838 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAndOperator(this);
5839 			else return visitor.visitChildren(this);
5840 		}
5841 	}
5842 
5843 	public final AndOperatorContext andOperator() throws RecognitionException {
5844 		AndOperatorContext _localctx = new AndOperatorContext(_ctx, getState());
5845 		enterRule(_localctx, 100, RULE_andOperator);
5846 		int _la;
5847 		try {
5848 			enterOuterAlt(_localctx, 1);
5849 			{
5850 			setState(1321);
5851 			_la = _input.LA(1);
5852 			if ( !(_la==AND_ || _la==AND) ) {
5853 			_errHandler.recoverInline(this);
5854 			}
5855 			else {
5856 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5857 				_errHandler.reportMatch(this);
5858 				consume();
5859 			}
5860 			}
5861 		}
5862 		catch (RecognitionException re) {
5863 			_localctx.exception = re;
5864 			_errHandler.reportError(this, re);
5865 			_errHandler.recover(this, re);
5866 		}
5867 		finally {
5868 			exitRule();
5869 		}
5870 		return _localctx;
5871 	}
5872 
5873 	public static class OrOperatorContext extends ParserRuleContext {
5874 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
5875 		public TerminalNode OR_() { return getToken(SQLServerStatementParser.OR_, 0); }
5876 		public OrOperatorContext(ParserRuleContext parent, int invokingState) {
5877 			super(parent, invokingState);
5878 		}
5879 		@Override public int getRuleIndex() { return RULE_orOperator; }
5880 		@Override
5881 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5882 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrOperator(this);
5883 			else return visitor.visitChildren(this);
5884 		}
5885 	}
5886 
5887 	public final OrOperatorContext orOperator() throws RecognitionException {
5888 		OrOperatorContext _localctx = new OrOperatorContext(_ctx, getState());
5889 		enterRule(_localctx, 102, RULE_orOperator);
5890 		int _la;
5891 		try {
5892 			enterOuterAlt(_localctx, 1);
5893 			{
5894 			setState(1323);
5895 			_la = _input.LA(1);
5896 			if ( !(_la==OR_ || _la==OR) ) {
5897 			_errHandler.recoverInline(this);
5898 			}
5899 			else {
5900 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5901 				_errHandler.reportMatch(this);
5902 				consume();
5903 			}
5904 			}
5905 		}
5906 		catch (RecognitionException re) {
5907 			_localctx.exception = re;
5908 			_errHandler.reportError(this, re);
5909 			_errHandler.recover(this, re);
5910 		}
5911 		finally {
5912 			exitRule();
5913 		}
5914 		return _localctx;
5915 	}
5916 
5917 	public static class NotOperatorContext extends ParserRuleContext {
5918 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
5919 		public TerminalNode NOT_() { return getToken(SQLServerStatementParser.NOT_, 0); }
5920 		public NotOperatorContext(ParserRuleContext parent, int invokingState) {
5921 			super(parent, invokingState);
5922 		}
5923 		@Override public int getRuleIndex() { return RULE_notOperator; }
5924 		@Override
5925 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5926 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNotOperator(this);
5927 			else return visitor.visitChildren(this);
5928 		}
5929 	}
5930 
5931 	public final NotOperatorContext notOperator() throws RecognitionException {
5932 		NotOperatorContext _localctx = new NotOperatorContext(_ctx, getState());
5933 		enterRule(_localctx, 104, RULE_notOperator);
5934 		int _la;
5935 		try {
5936 			enterOuterAlt(_localctx, 1);
5937 			{
5938 			setState(1325);
5939 			_la = _input.LA(1);
5940 			if ( !(_la==NOT_ || _la==NOT) ) {
5941 			_errHandler.recoverInline(this);
5942 			}
5943 			else {
5944 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5945 				_errHandler.reportMatch(this);
5946 				consume();
5947 			}
5948 			}
5949 		}
5950 		catch (RecognitionException re) {
5951 			_localctx.exception = re;
5952 			_errHandler.reportError(this, re);
5953 			_errHandler.recover(this, re);
5954 		}
5955 		finally {
5956 			exitRule();
5957 		}
5958 		return _localctx;
5959 	}
5960 
5961 	public static class BooleanPrimaryContext extends ParserRuleContext {
5962 		public PredicateContext predicate() {
5963 			return getRuleContext(PredicateContext.class,0);
5964 		}
5965 		public BooleanPrimaryContext booleanPrimary() {
5966 			return getRuleContext(BooleanPrimaryContext.class,0);
5967 		}
5968 		public TerminalNode IS() { return getToken(SQLServerStatementParser.IS, 0); }
5969 		public TerminalNode TRUE() { return getToken(SQLServerStatementParser.TRUE, 0); }
5970 		public TerminalNode FALSE() { return getToken(SQLServerStatementParser.FALSE, 0); }
5971 		public TerminalNode UNKNOWN() { return getToken(SQLServerStatementParser.UNKNOWN, 0); }
5972 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
5973 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
5974 		public TerminalNode SAFE_EQ_() { return getToken(SQLServerStatementParser.SAFE_EQ_, 0); }
5975 		public ComparisonOperatorContext comparisonOperator() {
5976 			return getRuleContext(ComparisonOperatorContext.class,0);
5977 		}
5978 		public SubqueryContext subquery() {
5979 			return getRuleContext(SubqueryContext.class,0);
5980 		}
5981 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
5982 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
5983 		public BooleanPrimaryContext(ParserRuleContext parent, int invokingState) {
5984 			super(parent, invokingState);
5985 		}
5986 		@Override public int getRuleIndex() { return RULE_booleanPrimary; }
5987 		@Override
5988 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5989 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBooleanPrimary(this);
5990 			else return visitor.visitChildren(this);
5991 		}
5992 	}
5993 
5994 	public final BooleanPrimaryContext booleanPrimary() throws RecognitionException {
5995 		return booleanPrimary(0);
5996 	}
5997 
5998 	private BooleanPrimaryContext booleanPrimary(int _p) throws RecognitionException {
5999 		ParserRuleContext _parentctx = _ctx;
6000 		int _parentState = getState();
6001 		BooleanPrimaryContext _localctx = new BooleanPrimaryContext(_ctx, _parentState);
6002 		BooleanPrimaryContext _prevctx = _localctx;
6003 		int _startState = 106;
6004 		enterRecursionRule(_localctx, 106, RULE_booleanPrimary, _p);
6005 		int _la;
6006 		try {
6007 			int _alt;
6008 			enterOuterAlt(_localctx, 1);
6009 			{
6010 			{
6011 			setState(1328);
6012 			predicate();
6013 			}
6014 			_ctx.stop = _input.LT(-1);
6015 			setState(1350);
6016 			_errHandler.sync(this);
6017 			_alt = getInterpreter().adaptivePredict(_input,46,_ctx);
6018 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6019 				if ( _alt==1 ) {
6020 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6021 					_prevctx = _localctx;
6022 					{
6023 					setState(1348);
6024 					_errHandler.sync(this);
6025 					switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
6026 					case 1:
6027 						{
6028 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6029 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6030 						setState(1330);
6031 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
6032 						setState(1331);
6033 						match(IS);
6034 						setState(1333);
6035 						_errHandler.sync(this);
6036 						_la = _input.LA(1);
6037 						if (_la==NOT) {
6038 							{
6039 							setState(1332);
6040 							match(NOT);
6041 							}
6042 						}
6043 
6044 						setState(1335);
6045 						_la = _input.LA(1);
6046 						if ( !(((((_la - 106)) & ~0x3f) == 0 && ((1L << (_la - 106)) & ((1L << (NULL - 106)) | (1L << (TRUE - 106)) | (1L << (FALSE - 106)))) != 0) || _la==UNKNOWN) ) {
6047 						_errHandler.recoverInline(this);
6048 						}
6049 						else {
6050 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6051 							_errHandler.reportMatch(this);
6052 							consume();
6053 						}
6054 						}
6055 						break;
6056 					case 2:
6057 						{
6058 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6059 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6060 						setState(1336);
6061 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
6062 						setState(1337);
6063 						match(SAFE_EQ_);
6064 						setState(1338);
6065 						predicate();
6066 						}
6067 						break;
6068 					case 3:
6069 						{
6070 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6071 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6072 						setState(1339);
6073 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
6074 						setState(1340);
6075 						comparisonOperator();
6076 						setState(1341);
6077 						predicate();
6078 						}
6079 						break;
6080 					case 4:
6081 						{
6082 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6083 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6084 						setState(1343);
6085 						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
6086 						setState(1344);
6087 						comparisonOperator();
6088 						setState(1345);
6089 						_la = _input.LA(1);
6090 						if ( !(_la==ALL || _la==ANY) ) {
6091 						_errHandler.recoverInline(this);
6092 						}
6093 						else {
6094 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6095 							_errHandler.reportMatch(this);
6096 							consume();
6097 						}
6098 						setState(1346);
6099 						subquery();
6100 						}
6101 						break;
6102 					}
6103 					} 
6104 				}
6105 				setState(1352);
6106 				_errHandler.sync(this);
6107 				_alt = getInterpreter().adaptivePredict(_input,46,_ctx);
6108 			}
6109 			}
6110 		}
6111 		catch (RecognitionException re) {
6112 			_localctx.exception = re;
6113 			_errHandler.reportError(this, re);
6114 			_errHandler.recover(this, re);
6115 		}
6116 		finally {
6117 			unrollRecursionContexts(_parentctx);
6118 		}
6119 		return _localctx;
6120 	}
6121 
6122 	public static class ComparisonOperatorContext extends ParserRuleContext {
6123 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
6124 		public TerminalNode GTE_() { return getToken(SQLServerStatementParser.GTE_, 0); }
6125 		public TerminalNode GT_() { return getToken(SQLServerStatementParser.GT_, 0); }
6126 		public TerminalNode LTE_() { return getToken(SQLServerStatementParser.LTE_, 0); }
6127 		public TerminalNode LT_() { return getToken(SQLServerStatementParser.LT_, 0); }
6128 		public TerminalNode NEQ_() { return getToken(SQLServerStatementParser.NEQ_, 0); }
6129 		public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
6130 			super(parent, invokingState);
6131 		}
6132 		@Override public int getRuleIndex() { return RULE_comparisonOperator; }
6133 		@Override
6134 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6135 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComparisonOperator(this);
6136 			else return visitor.visitChildren(this);
6137 		}
6138 	}
6139 
6140 	public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
6141 		ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
6142 		enterRule(_localctx, 108, RULE_comparisonOperator);
6143 		int _la;
6144 		try {
6145 			enterOuterAlt(_localctx, 1);
6146 			{
6147 			setState(1353);
6148 			_la = _input.LA(1);
6149 			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ_) | (1L << NEQ_) | (1L << GT_) | (1L << GTE_) | (1L << LT_) | (1L << LTE_))) != 0)) ) {
6150 			_errHandler.recoverInline(this);
6151 			}
6152 			else {
6153 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6154 				_errHandler.reportMatch(this);
6155 				consume();
6156 			}
6157 			}
6158 		}
6159 		catch (RecognitionException re) {
6160 			_localctx.exception = re;
6161 			_errHandler.reportError(this, re);
6162 			_errHandler.recover(this, re);
6163 		}
6164 		finally {
6165 			exitRule();
6166 		}
6167 		return _localctx;
6168 	}
6169 
6170 	public static class PredicateContext extends ParserRuleContext {
6171 		public List<BitExprContext> bitExpr() {
6172 			return getRuleContexts(BitExprContext.class);
6173 		}
6174 		public BitExprContext bitExpr(int i) {
6175 			return getRuleContext(BitExprContext.class,i);
6176 		}
6177 		public TerminalNode IN() { return getToken(SQLServerStatementParser.IN, 0); }
6178 		public SubqueryContext subquery() {
6179 			return getRuleContext(SubqueryContext.class,0);
6180 		}
6181 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6182 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6183 		public List<ExprContext> expr() {
6184 			return getRuleContexts(ExprContext.class);
6185 		}
6186 		public ExprContext expr(int i) {
6187 			return getRuleContext(ExprContext.class,i);
6188 		}
6189 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6190 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6191 		public TerminalNode COMMA_(int i) {
6192 			return getToken(SQLServerStatementParser.COMMA_, i);
6193 		}
6194 		public TerminalNode BETWEEN() { return getToken(SQLServerStatementParser.BETWEEN, 0); }
6195 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
6196 		public PredicateContext predicate() {
6197 			return getRuleContext(PredicateContext.class,0);
6198 		}
6199 		public TerminalNode LIKE() { return getToken(SQLServerStatementParser.LIKE, 0); }
6200 		public List<SimpleExprContext> simpleExpr() {
6201 			return getRuleContexts(SimpleExprContext.class);
6202 		}
6203 		public SimpleExprContext simpleExpr(int i) {
6204 			return getRuleContext(SimpleExprContext.class,i);
6205 		}
6206 		public TerminalNode ESCAPE() { return getToken(SQLServerStatementParser.ESCAPE, 0); }
6207 		public PredicateContext(ParserRuleContext parent, int invokingState) {
6208 			super(parent, invokingState);
6209 		}
6210 		@Override public int getRuleIndex() { return RULE_predicate; }
6211 		@Override
6212 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6213 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPredicate(this);
6214 			else return visitor.visitChildren(this);
6215 		}
6216 	}
6217 
6218 	public final PredicateContext predicate() throws RecognitionException {
6219 		PredicateContext _localctx = new PredicateContext(_ctx, getState());
6220 		enterRule(_localctx, 110, RULE_predicate);
6221 		int _la;
6222 		try {
6223 			setState(1398);
6224 			_errHandler.sync(this);
6225 			switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
6226 			case 1:
6227 				enterOuterAlt(_localctx, 1);
6228 				{
6229 				setState(1355);
6230 				bitExpr(0);
6231 				setState(1357);
6232 				_errHandler.sync(this);
6233 				_la = _input.LA(1);
6234 				if (_la==NOT) {
6235 					{
6236 					setState(1356);
6237 					match(NOT);
6238 					}
6239 				}
6240 
6241 				setState(1359);
6242 				match(IN);
6243 				setState(1360);
6244 				subquery();
6245 				}
6246 				break;
6247 			case 2:
6248 				enterOuterAlt(_localctx, 2);
6249 				{
6250 				setState(1362);
6251 				bitExpr(0);
6252 				setState(1364);
6253 				_errHandler.sync(this);
6254 				_la = _input.LA(1);
6255 				if (_la==NOT) {
6256 					{
6257 					setState(1363);
6258 					match(NOT);
6259 					}
6260 				}
6261 
6262 				setState(1366);
6263 				match(IN);
6264 				setState(1367);
6265 				match(LP_);
6266 				setState(1368);
6267 				expr(0);
6268 				setState(1373);
6269 				_errHandler.sync(this);
6270 				_la = _input.LA(1);
6271 				while (_la==COMMA_) {
6272 					{
6273 					{
6274 					setState(1369);
6275 					match(COMMA_);
6276 					setState(1370);
6277 					expr(0);
6278 					}
6279 					}
6280 					setState(1375);
6281 					_errHandler.sync(this);
6282 					_la = _input.LA(1);
6283 				}
6284 				setState(1376);
6285 				match(RP_);
6286 				}
6287 				break;
6288 			case 3:
6289 				enterOuterAlt(_localctx, 3);
6290 				{
6291 				setState(1378);
6292 				bitExpr(0);
6293 				setState(1380);
6294 				_errHandler.sync(this);
6295 				_la = _input.LA(1);
6296 				if (_la==NOT) {
6297 					{
6298 					setState(1379);
6299 					match(NOT);
6300 					}
6301 				}
6302 
6303 				setState(1382);
6304 				match(BETWEEN);
6305 				setState(1383);
6306 				bitExpr(0);
6307 				setState(1384);
6308 				match(AND);
6309 				setState(1385);
6310 				predicate();
6311 				}
6312 				break;
6313 			case 4:
6314 				enterOuterAlt(_localctx, 4);
6315 				{
6316 				setState(1387);
6317 				bitExpr(0);
6318 				setState(1389);
6319 				_errHandler.sync(this);
6320 				_la = _input.LA(1);
6321 				if (_la==NOT) {
6322 					{
6323 					setState(1388);
6324 					match(NOT);
6325 					}
6326 				}
6327 
6328 				setState(1391);
6329 				match(LIKE);
6330 				setState(1392);
6331 				simpleExpr(0);
6332 				setState(1395);
6333 				_errHandler.sync(this);
6334 				switch ( getInterpreter().adaptivePredict(_input,52,_ctx) ) {
6335 				case 1:
6336 					{
6337 					setState(1393);
6338 					match(ESCAPE);
6339 					setState(1394);
6340 					simpleExpr(0);
6341 					}
6342 					break;
6343 				}
6344 				}
6345 				break;
6346 			case 5:
6347 				enterOuterAlt(_localctx, 5);
6348 				{
6349 				setState(1397);
6350 				bitExpr(0);
6351 				}
6352 				break;
6353 			}
6354 		}
6355 		catch (RecognitionException re) {
6356 			_localctx.exception = re;
6357 			_errHandler.reportError(this, re);
6358 			_errHandler.recover(this, re);
6359 		}
6360 		finally {
6361 			exitRule();
6362 		}
6363 		return _localctx;
6364 	}
6365 
6366 	public static class BitExprContext extends ParserRuleContext {
6367 		public SimpleExprContext simpleExpr() {
6368 			return getRuleContext(SimpleExprContext.class,0);
6369 		}
6370 		public List<BitExprContext> bitExpr() {
6371 			return getRuleContexts(BitExprContext.class);
6372 		}
6373 		public BitExprContext bitExpr(int i) {
6374 			return getRuleContext(BitExprContext.class,i);
6375 		}
6376 		public TerminalNode VERTICAL_BAR_() { return getToken(SQLServerStatementParser.VERTICAL_BAR_, 0); }
6377 		public TerminalNode AMPERSAND_() { return getToken(SQLServerStatementParser.AMPERSAND_, 0); }
6378 		public TerminalNode SIGNED_LEFT_SHIFT_() { return getToken(SQLServerStatementParser.SIGNED_LEFT_SHIFT_, 0); }
6379 		public TerminalNode SIGNED_RIGHT_SHIFT_() { return getToken(SQLServerStatementParser.SIGNED_RIGHT_SHIFT_, 0); }
6380 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
6381 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
6382 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
6383 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
6384 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
6385 		public TerminalNode CARET_() { return getToken(SQLServerStatementParser.CARET_, 0); }
6386 		public BitExprContext(ParserRuleContext parent, int invokingState) {
6387 			super(parent, invokingState);
6388 		}
6389 		@Override public int getRuleIndex() { return RULE_bitExpr; }
6390 		@Override
6391 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6392 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBitExpr(this);
6393 			else return visitor.visitChildren(this);
6394 		}
6395 	}
6396 
6397 	public final BitExprContext bitExpr() throws RecognitionException {
6398 		return bitExpr(0);
6399 	}
6400 
6401 	private BitExprContext bitExpr(int _p) throws RecognitionException {
6402 		ParserRuleContext _parentctx = _ctx;
6403 		int _parentState = getState();
6404 		BitExprContext _localctx = new BitExprContext(_ctx, _parentState);
6405 		BitExprContext _prevctx = _localctx;
6406 		int _startState = 112;
6407 		enterRecursionRule(_localctx, 112, RULE_bitExpr, _p);
6408 		try {
6409 			int _alt;
6410 			enterOuterAlt(_localctx, 1);
6411 			{
6412 			{
6413 			setState(1401);
6414 			simpleExpr(0);
6415 			}
6416 			_ctx.stop = _input.LT(-1);
6417 			setState(1435);
6418 			_errHandler.sync(this);
6419 			_alt = getInterpreter().adaptivePredict(_input,55,_ctx);
6420 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6421 				if ( _alt==1 ) {
6422 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6423 					_prevctx = _localctx;
6424 					{
6425 					setState(1433);
6426 					_errHandler.sync(this);
6427 					switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
6428 					case 1:
6429 						{
6430 						_localctx = new BitExprContext(_parentctx, _parentState);
6431 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6432 						setState(1403);
6433 						if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
6434 						setState(1404);
6435 						match(VERTICAL_BAR_);
6436 						setState(1405);
6437 						bitExpr(12);
6438 						}
6439 						break;
6440 					case 2:
6441 						{
6442 						_localctx = new BitExprContext(_parentctx, _parentState);
6443 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6444 						setState(1406);
6445 						if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
6446 						setState(1407);
6447 						match(AMPERSAND_);
6448 						setState(1408);
6449 						bitExpr(11);
6450 						}
6451 						break;
6452 					case 3:
6453 						{
6454 						_localctx = new BitExprContext(_parentctx, _parentState);
6455 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6456 						setState(1409);
6457 						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
6458 						setState(1410);
6459 						match(SIGNED_LEFT_SHIFT_);
6460 						setState(1411);
6461 						bitExpr(10);
6462 						}
6463 						break;
6464 					case 4:
6465 						{
6466 						_localctx = new BitExprContext(_parentctx, _parentState);
6467 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6468 						setState(1412);
6469 						if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
6470 						setState(1413);
6471 						match(SIGNED_RIGHT_SHIFT_);
6472 						setState(1414);
6473 						bitExpr(9);
6474 						}
6475 						break;
6476 					case 5:
6477 						{
6478 						_localctx = new BitExprContext(_parentctx, _parentState);
6479 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6480 						setState(1415);
6481 						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
6482 						setState(1416);
6483 						match(PLUS_);
6484 						setState(1417);
6485 						bitExpr(8);
6486 						}
6487 						break;
6488 					case 6:
6489 						{
6490 						_localctx = new BitExprContext(_parentctx, _parentState);
6491 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6492 						setState(1418);
6493 						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
6494 						setState(1419);
6495 						match(MINUS_);
6496 						setState(1420);
6497 						bitExpr(7);
6498 						}
6499 						break;
6500 					case 7:
6501 						{
6502 						_localctx = new BitExprContext(_parentctx, _parentState);
6503 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6504 						setState(1421);
6505 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
6506 						setState(1422);
6507 						match(ASTERISK_);
6508 						setState(1423);
6509 						bitExpr(6);
6510 						}
6511 						break;
6512 					case 8:
6513 						{
6514 						_localctx = new BitExprContext(_parentctx, _parentState);
6515 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6516 						setState(1424);
6517 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
6518 						setState(1425);
6519 						match(SLASH_);
6520 						setState(1426);
6521 						bitExpr(5);
6522 						}
6523 						break;
6524 					case 9:
6525 						{
6526 						_localctx = new BitExprContext(_parentctx, _parentState);
6527 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6528 						setState(1427);
6529 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
6530 						setState(1428);
6531 						match(MOD_);
6532 						setState(1429);
6533 						bitExpr(4);
6534 						}
6535 						break;
6536 					case 10:
6537 						{
6538 						_localctx = new BitExprContext(_parentctx, _parentState);
6539 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6540 						setState(1430);
6541 						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
6542 						setState(1431);
6543 						match(CARET_);
6544 						setState(1432);
6545 						bitExpr(3);
6546 						}
6547 						break;
6548 					}
6549 					} 
6550 				}
6551 				setState(1437);
6552 				_errHandler.sync(this);
6553 				_alt = getInterpreter().adaptivePredict(_input,55,_ctx);
6554 			}
6555 			}
6556 		}
6557 		catch (RecognitionException re) {
6558 			_localctx.exception = re;
6559 			_errHandler.reportError(this, re);
6560 			_errHandler.recover(this, re);
6561 		}
6562 		finally {
6563 			unrollRecursionContexts(_parentctx);
6564 		}
6565 		return _localctx;
6566 	}
6567 
6568 	public static class SimpleExprContext extends ParserRuleContext {
6569 		public FunctionCallContext functionCall() {
6570 			return getRuleContext(FunctionCallContext.class,0);
6571 		}
6572 		public ParameterMarkerContext parameterMarker() {
6573 			return getRuleContext(ParameterMarkerContext.class,0);
6574 		}
6575 		public LiteralsContext literals() {
6576 			return getRuleContext(LiteralsContext.class,0);
6577 		}
6578 		public ColumnNameContext columnName() {
6579 			return getRuleContext(ColumnNameContext.class,0);
6580 		}
6581 		public VariableNameContext variableName() {
6582 			return getRuleContext(VariableNameContext.class,0);
6583 		}
6584 		public List<SimpleExprContext> simpleExpr() {
6585 			return getRuleContexts(SimpleExprContext.class);
6586 		}
6587 		public SimpleExprContext simpleExpr(int i) {
6588 			return getRuleContext(SimpleExprContext.class,i);
6589 		}
6590 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
6591 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
6592 		public TerminalNode TILDE_() { return getToken(SQLServerStatementParser.TILDE_, 0); }
6593 		public TerminalNode NOT_() { return getToken(SQLServerStatementParser.NOT_, 0); }
6594 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
6595 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6596 		public List<ExprContext> expr() {
6597 			return getRuleContexts(ExprContext.class);
6598 		}
6599 		public ExprContext expr(int i) {
6600 			return getRuleContext(ExprContext.class,i);
6601 		}
6602 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6603 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
6604 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6605 		public TerminalNode COMMA_(int i) {
6606 			return getToken(SQLServerStatementParser.COMMA_, i);
6607 		}
6608 		public SubqueryContext subquery() {
6609 			return getRuleContext(SubqueryContext.class,0);
6610 		}
6611 		public TerminalNode EXISTS() { return getToken(SQLServerStatementParser.EXISTS, 0); }
6612 		public TerminalNode LBE_() { return getToken(SQLServerStatementParser.LBE_, 0); }
6613 		public IdentifierContext identifier() {
6614 			return getRuleContext(IdentifierContext.class,0);
6615 		}
6616 		public TerminalNode RBE_() { return getToken(SQLServerStatementParser.RBE_, 0); }
6617 		public CaseExpressionContext caseExpression() {
6618 			return getRuleContext(CaseExpressionContext.class,0);
6619 		}
6620 		public PrivateExprOfDbContext privateExprOfDb() {
6621 			return getRuleContext(PrivateExprOfDbContext.class,0);
6622 		}
6623 		public TerminalNode OR_() { return getToken(SQLServerStatementParser.OR_, 0); }
6624 		public SimpleExprContext(ParserRuleContext parent, int invokingState) {
6625 			super(parent, invokingState);
6626 		}
6627 		@Override public int getRuleIndex() { return RULE_simpleExpr; }
6628 		@Override
6629 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6630 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSimpleExpr(this);
6631 			else return visitor.visitChildren(this);
6632 		}
6633 	}
6634 
6635 	public final SimpleExprContext simpleExpr() throws RecognitionException {
6636 		return simpleExpr(0);
6637 	}
6638 
6639 	private SimpleExprContext simpleExpr(int _p) throws RecognitionException {
6640 		ParserRuleContext _parentctx = _ctx;
6641 		int _parentState = getState();
6642 		SimpleExprContext _localctx = new SimpleExprContext(_ctx, _parentState);
6643 		SimpleExprContext _prevctx = _localctx;
6644 		int _startState = 114;
6645 		enterRecursionRule(_localctx, 114, RULE_simpleExpr, _p);
6646 		int _la;
6647 		try {
6648 			int _alt;
6649 			enterOuterAlt(_localctx, 1);
6650 			{
6651 			setState(1471);
6652 			_errHandler.sync(this);
6653 			switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) {
6654 			case 1:
6655 				{
6656 				setState(1439);
6657 				functionCall();
6658 				}
6659 				break;
6660 			case 2:
6661 				{
6662 				setState(1440);
6663 				parameterMarker();
6664 				}
6665 				break;
6666 			case 3:
6667 				{
6668 				setState(1441);
6669 				literals();
6670 				}
6671 				break;
6672 			case 4:
6673 				{
6674 				setState(1442);
6675 				columnName();
6676 				}
6677 				break;
6678 			case 5:
6679 				{
6680 				setState(1443);
6681 				variableName();
6682 				}
6683 				break;
6684 			case 6:
6685 				{
6686 				setState(1444);
6687 				_la = _input.LA(1);
6688 				if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_))) != 0) || _la==BINARY) ) {
6689 				_errHandler.recoverInline(this);
6690 				}
6691 				else {
6692 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6693 					_errHandler.reportMatch(this);
6694 					consume();
6695 				}
6696 				setState(1445);
6697 				simpleExpr(6);
6698 				}
6699 				break;
6700 			case 7:
6701 				{
6702 				setState(1447);
6703 				_errHandler.sync(this);
6704 				_la = _input.LA(1);
6705 				if (_la==ROW) {
6706 					{
6707 					setState(1446);
6708 					match(ROW);
6709 					}
6710 				}
6711 
6712 				setState(1449);
6713 				match(LP_);
6714 				setState(1450);
6715 				expr(0);
6716 				setState(1455);
6717 				_errHandler.sync(this);
6718 				_la = _input.LA(1);
6719 				while (_la==COMMA_) {
6720 					{
6721 					{
6722 					setState(1451);
6723 					match(COMMA_);
6724 					setState(1452);
6725 					expr(0);
6726 					}
6727 					}
6728 					setState(1457);
6729 					_errHandler.sync(this);
6730 					_la = _input.LA(1);
6731 				}
6732 				setState(1458);
6733 				match(RP_);
6734 				}
6735 				break;
6736 			case 8:
6737 				{
6738 				setState(1461);
6739 				_errHandler.sync(this);
6740 				_la = _input.LA(1);
6741 				if (_la==EXISTS) {
6742 					{
6743 					setState(1460);
6744 					match(EXISTS);
6745 					}
6746 				}
6747 
6748 				setState(1463);
6749 				subquery();
6750 				}
6751 				break;
6752 			case 9:
6753 				{
6754 				setState(1464);
6755 				match(LBE_);
6756 				setState(1465);
6757 				identifier();
6758 				setState(1466);
6759 				expr(0);
6760 				setState(1467);
6761 				match(RBE_);
6762 				}
6763 				break;
6764 			case 10:
6765 				{
6766 				setState(1469);
6767 				caseExpression();
6768 				}
6769 				break;
6770 			case 11:
6771 				{
6772 				setState(1470);
6773 				privateExprOfDb();
6774 				}
6775 				break;
6776 			}
6777 			_ctx.stop = _input.LT(-1);
6778 			setState(1478);
6779 			_errHandler.sync(this);
6780 			_alt = getInterpreter().adaptivePredict(_input,60,_ctx);
6781 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6782 				if ( _alt==1 ) {
6783 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6784 					_prevctx = _localctx;
6785 					{
6786 					{
6787 					_localctx = new SimpleExprContext(_parentctx, _parentState);
6788 					pushNewRecursionContext(_localctx, _startState, RULE_simpleExpr);
6789 					setState(1473);
6790 					if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
6791 					setState(1474);
6792 					match(OR_);
6793 					setState(1475);
6794 					simpleExpr(8);
6795 					}
6796 					} 
6797 				}
6798 				setState(1480);
6799 				_errHandler.sync(this);
6800 				_alt = getInterpreter().adaptivePredict(_input,60,_ctx);
6801 			}
6802 			}
6803 		}
6804 		catch (RecognitionException re) {
6805 			_localctx.exception = re;
6806 			_errHandler.reportError(this, re);
6807 			_errHandler.recover(this, re);
6808 		}
6809 		finally {
6810 			unrollRecursionContexts(_parentctx);
6811 		}
6812 		return _localctx;
6813 	}
6814 
6815 	public static class FunctionCallContext extends ParserRuleContext {
6816 		public AggregationFunctionContext aggregationFunction() {
6817 			return getRuleContext(AggregationFunctionContext.class,0);
6818 		}
6819 		public SpecialFunctionContext specialFunction() {
6820 			return getRuleContext(SpecialFunctionContext.class,0);
6821 		}
6822 		public RegularFunctionContext regularFunction() {
6823 			return getRuleContext(RegularFunctionContext.class,0);
6824 		}
6825 		public FunctionCallContext(ParserRuleContext parent, int invokingState) {
6826 			super(parent, invokingState);
6827 		}
6828 		@Override public int getRuleIndex() { return RULE_functionCall; }
6829 		@Override
6830 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6831 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionCall(this);
6832 			else return visitor.visitChildren(this);
6833 		}
6834 	}
6835 
6836 	public final FunctionCallContext functionCall() throws RecognitionException {
6837 		FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState());
6838 		enterRule(_localctx, 116, RULE_functionCall);
6839 		try {
6840 			setState(1484);
6841 			_errHandler.sync(this);
6842 			switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) {
6843 			case 1:
6844 				enterOuterAlt(_localctx, 1);
6845 				{
6846 				setState(1481);
6847 				aggregationFunction();
6848 				}
6849 				break;
6850 			case 2:
6851 				enterOuterAlt(_localctx, 2);
6852 				{
6853 				setState(1482);
6854 				specialFunction();
6855 				}
6856 				break;
6857 			case 3:
6858 				enterOuterAlt(_localctx, 3);
6859 				{
6860 				setState(1483);
6861 				regularFunction();
6862 				}
6863 				break;
6864 			}
6865 		}
6866 		catch (RecognitionException re) {
6867 			_localctx.exception = re;
6868 			_errHandler.reportError(this, re);
6869 			_errHandler.recover(this, re);
6870 		}
6871 		finally {
6872 			exitRule();
6873 		}
6874 		return _localctx;
6875 	}
6876 
6877 	public static class AggregationFunctionContext extends ParserRuleContext {
6878 		public AggregationFunctionNameContext aggregationFunctionName() {
6879 			return getRuleContext(AggregationFunctionNameContext.class,0);
6880 		}
6881 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6882 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6883 		public DistinctContext distinct() {
6884 			return getRuleContext(DistinctContext.class,0);
6885 		}
6886 		public List<ExprContext> expr() {
6887 			return getRuleContexts(ExprContext.class);
6888 		}
6889 		public ExprContext expr(int i) {
6890 			return getRuleContext(ExprContext.class,i);
6891 		}
6892 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
6893 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6894 		public TerminalNode COMMA_(int i) {
6895 			return getToken(SQLServerStatementParser.COMMA_, i);
6896 		}
6897 		public AggregationFunctionContext(ParserRuleContext parent, int invokingState) {
6898 			super(parent, invokingState);
6899 		}
6900 		@Override public int getRuleIndex() { return RULE_aggregationFunction; }
6901 		@Override
6902 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6903 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationFunction(this);
6904 			else return visitor.visitChildren(this);
6905 		}
6906 	}
6907 
6908 	public final AggregationFunctionContext aggregationFunction() throws RecognitionException {
6909 		AggregationFunctionContext _localctx = new AggregationFunctionContext(_ctx, getState());
6910 		enterRule(_localctx, 118, RULE_aggregationFunction);
6911 		int _la;
6912 		try {
6913 			enterOuterAlt(_localctx, 1);
6914 			{
6915 			setState(1486);
6916 			aggregationFunctionName();
6917 			setState(1487);
6918 			match(LP_);
6919 			setState(1489);
6920 			_errHandler.sync(this);
6921 			_la = _input.LA(1);
6922 			if (_la==DISTINCT) {
6923 				{
6924 				setState(1488);
6925 				distinct();
6926 				}
6927 			}
6928 
6929 			setState(1500);
6930 			_errHandler.sync(this);
6931 			switch (_input.LA(1)) {
6932 			case NOT_:
6933 			case TILDE_:
6934 			case PLUS_:
6935 			case MINUS_:
6936 			case LP_:
6937 			case LBE_:
6938 			case QUESTION_:
6939 			case DOLLAR_:
6940 			case TRUNCATE:
6941 			case SCHEMA:
6942 			case FUNCTION:
6943 			case TRIGGER:
6944 			case CASE:
6945 			case CAST:
6946 			case IF:
6947 			case NOT:
6948 			case NULL:
6949 			case TRUE:
6950 			case FALSE:
6951 			case EXISTS:
6952 			case GROUP:
6953 			case LIMIT:
6954 			case OFFSET:
6955 			case SAVEPOINT:
6956 			case BOOLEAN:
6957 			case CHAR:
6958 			case ARRAY:
6959 			case INTERVAL:
6960 			case DATE:
6961 			case TIME:
6962 			case TIMESTAMP:
6963 			case LOCALTIME:
6964 			case LOCALTIMESTAMP:
6965 			case QUARTER:
6966 			case WEEK:
6967 			case DAY:
6968 			case MICROSECOND:
6969 			case MAX:
6970 			case MIN:
6971 			case SUM:
6972 			case COUNT:
6973 			case AVG:
6974 			case ENABLE:
6975 			case DISABLE:
6976 			case INSTANCE:
6977 			case DO:
6978 			case DEFINER:
6979 			case SQL:
6980 			case CASCADED:
6981 			case LOCAL:
6982 			case NEXT:
6983 			case NAME:
6984 			case INTEGER:
6985 			case TYPE:
6986 			case READ_ONLY:
6987 			case DATABASE:
6988 			case DATEPART:
6989 			case PASSWORD:
6990 			case BINARY:
6991 			case HIDDEN_:
6992 			case MOD:
6993 			case PARTITION:
6994 			case PARTITIONS:
6995 			case TOP:
6996 			case ROW:
6997 			case ROWS:
6998 			case XOR:
6999 			case ALWAYS:
7000 			case ROLE:
7001 			case START:
7002 			case ALGORITHM:
7003 			case AUTO:
7004 			case BLOCKERS:
7005 			case CLUSTERED:
7006 			case NONCLUSTERED:
7007 			case COLUMNSTORE:
7008 			case CONTENT:
7009 			case CONVERT:
7010 			case YEARS:
7011 			case MONTHS:
7012 			case WEEKS:
7013 			case DAYS:
7014 			case MINUTES:
7015 			case DENY:
7016 			case DETERMINISTIC:
7017 			case DISTRIBUTION:
7018 			case DOCUMENT:
7019 			case DURABILITY:
7020 			case ENCRYPTED:
7021 			case FILESTREAM:
7022 			case FILETABLE:
7023 			case FILLFACTOR:
7024 			case FOLLOWING:
7025 			case HASH:
7026 			case HEAP:
7027 			case INBOUND:
7028 			case OUTBOUND:
7029 			case UNBOUNDED:
7030 			case INFINITE:
7031 			case LOGIN:
7032 			case MASKED:
7033 			case MAXDOP:
7034 			case MOVE:
7035 			case NOCHECK:
7036 			case OBJECT:
7037 			case OFF:
7038 			case ONLINE:
7039 			case OVER:
7040 			case PAGE:
7041 			case PAUSED:
7042 			case PERIOD:
7043 			case PERSISTED:
7044 			case PRECEDING:
7045 			case RANDOMIZED:
7046 			case RANGE:
7047 			case REBUILD:
7048 			case REPLICATE:
7049 			case REPLICATION:
7050 			case RESUMABLE:
7051 			case ROWGUIDCOL:
7052 			case SAVE:
7053 			case SELF:
7054 			case SPARSE:
7055 			case SWITCH:
7056 			case TRAN:
7057 			case TRANCOUNT:
7058 			case CONTROL:
7059 			case CONCAT:
7060 			case TAKE:
7061 			case OWNERSHIP:
7062 			case DEFINITION:
7063 			case APPLICATION:
7064 			case ASSEMBLY:
7065 			case SYMMETRIC:
7066 			case ASYMMETRIC:
7067 			case SERVER:
7068 			case RECEIVE:
7069 			case CHANGE:
7070 			case TRACE:
7071 			case TRACKING:
7072 			case RESOURCES:
7073 			case SETTINGS:
7074 			case STATE:
7075 			case AVAILABILITY:
7076 			case CREDENTIAL:
7077 			case ENDPOINT:
7078 			case EVENT:
7079 			case NOTIFICATION:
7080 			case LINKED:
7081 			case AUDIT:
7082 			case DDL:
7083 			case XML:
7084 			case IMPERSONATE:
7085 			case SECURABLES:
7086 			case AUTHENTICATE:
7087 			case EXTERNAL:
7088 			case ACCESS:
7089 			case ADMINISTER:
7090 			case BULK:
7091 			case OPERATIONS:
7092 			case UNSAFE:
7093 			case SHUTDOWN:
7094 			case SCOPED:
7095 			case CONFIGURATION:
7096 			case DATASPACE:
7097 			case SERVICE:
7098 			case CERTIFICATE:
7099 			case CONTRACT:
7100 			case ENCRYPTION:
7101 			case MASTER:
7102 			case DATA:
7103 			case SOURCE:
7104 			case FILE:
7105 			case FORMAT:
7106 			case LIBRARY:
7107 			case FULLTEXT:
7108 			case MASK:
7109 			case UNMASK:
7110 			case MESSAGE:
7111 			case REMOTE:
7112 			case BINDING:
7113 			case ROUTE:
7114 			case SECURITY:
7115 			case POLICY:
7116 			case AGGREGATE:
7117 			case QUEUE:
7118 			case RULE:
7119 			case SYNONYM:
7120 			case COLLECTION:
7121 			case SCRIPT:
7122 			case KILL:
7123 			case BACKUP:
7124 			case LOG:
7125 			case SHOWPLAN:
7126 			case SUBSCRIBE:
7127 			case QUERY:
7128 			case NOTIFICATIONS:
7129 			case CHECKPOINT:
7130 			case SEQUENCE:
7131 			case ABORT_AFTER_WAIT:
7132 			case ALLOW_PAGE_LOCKS:
7133 			case ALLOW_ROW_LOCKS:
7134 			case ALL_SPARSE_COLUMNS:
7135 			case BUCKET_COUNT:
7136 			case COLUMNSTORE_ARCHIVE:
7137 			case COLUMN_ENCRYPTION_KEY:
7138 			case COLUMN_SET:
7139 			case COMPRESSION_DELAY:
7140 			case DATABASE_DEAULT:
7141 			case DATA_COMPRESSION:
7142 			case DATA_CONSISTENCY_CHECK:
7143 			case ENCRYPTION_TYPE:
7144 			case SYSTEM_TIME:
7145 			case SYSTEM_VERSIONING:
7146 			case TEXTIMAGE_ON:
7147 			case WAIT_AT_LOW_PRIORITY:
7148 			case STATISTICS_INCREMENTAL:
7149 			case STATISTICS_NORECOMPUTE:
7150 			case ROUND_ROBIN:
7151 			case SCHEMA_AND_DATA:
7152 			case SCHEMA_ONLY:
7153 			case SORT_IN_TEMPDB:
7154 			case IGNORE_DUP_KEY:
7155 			case IMPLICIT_TRANSACTIONS:
7156 			case MAX_DURATION:
7157 			case MEMORY_OPTIMIZED:
7158 			case MIGRATION_STATE:
7159 			case PAD_INDEX:
7160 			case REMOTE_DATA_ARCHIVE:
7161 			case FILESTREAM_ON:
7162 			case FILETABLE_COLLATE_FILENAME:
7163 			case FILETABLE_DIRECTORY:
7164 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
7165 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
7166 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
7167 			case FILTER_PREDICATE:
7168 			case HISTORY_RETENTION_PERIOD:
7169 			case HISTORY_TABLE:
7170 			case LOCK_ESCALATION:
7171 			case DROP_EXISTING:
7172 			case ROW_NUMBER:
7173 			case FIRST:
7174 			case DATETIME2:
7175 			case OUTPUT:
7176 			case INSERTED:
7177 			case DELETED:
7178 			case FILENAME:
7179 			case MAXSIZE:
7180 			case FILEGROWTH:
7181 			case UNLIMITED:
7182 			case KB:
7183 			case MB:
7184 			case GB:
7185 			case TB:
7186 			case MEMORY_OPTIMIZED_DATA:
7187 			case FILEGROUP:
7188 			case NON_TRANSACTED_ACCESS:
7189 			case DB_CHAINING:
7190 			case TRUSTWORTHY:
7191 			case FORWARD_ONLY:
7192 			case KEYSET:
7193 			case FAST_FORWARD:
7194 			case SCROLL_LOCKS:
7195 			case OPTIMISTIC:
7196 			case TYPE_WARNING:
7197 			case SCHEMABINDING:
7198 			case CALLER:
7199 			case OWNER:
7200 			case SNAPSHOT:
7201 			case REPEATABLE:
7202 			case SERIALIZABLE:
7203 			case NATIVE_COMPILATION:
7204 			case VIEW_METADATA:
7205 			case INSTEAD:
7206 			case APPEND:
7207 			case INCREMENT:
7208 			case CACHE:
7209 			case MINVALUE:
7210 			case MAXVALUE:
7211 			case RESTART:
7212 			case LOB_COMPACTION:
7213 			case COMPRESS_ALL_ROW_GROUPS:
7214 			case REORGANIZE:
7215 			case RESUME:
7216 			case PAUSE:
7217 			case ABORT:
7218 			case ACCELERATED_DATABASE_RECOVERY:
7219 			case PERSISTENT_VERSION_STORE_FILEGROUP:
7220 			case IMMEDIATE:
7221 			case NO_WAIT:
7222 			case TARGET_RECOVERY_TIME:
7223 			case SECONDS:
7224 			case HONOR_BROKER_PRIORITY:
7225 			case ERROR_BROKER_CONVERSATIONS:
7226 			case NEW_BROKER:
7227 			case DISABLE_BROKER:
7228 			case ENABLE_BROKER:
7229 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
7230 			case READ_COMMITTED_SNAPSHOT:
7231 			case ALLOW_SNAPSHOT_ISOLATION:
7232 			case RECURSIVE_TRIGGERS:
7233 			case QUOTED_IDENTIFIER:
7234 			case NUMERIC_ROUNDABORT:
7235 			case CONCAT_NULL_YIELDS_NULL:
7236 			case COMPATIBILITY_LEVEL:
7237 			case ARITHABORT:
7238 			case ANSI_WARNINGS:
7239 			case ANSI_PADDING:
7240 			case ANSI_NULLS:
7241 			case ANSI_NULL_DEFAULT:
7242 			case PAGE_VERIFY:
7243 			case CHECKSUM:
7244 			case TORN_PAGE_DETECTION:
7245 			case BULK_LOGGED:
7246 			case RECOVERY:
7247 			case TOTAL_EXECUTION_CPU_TIME_MS:
7248 			case TOTAL_COMPILE_CPU_TIME_MS:
7249 			case STALE_CAPTURE_POLICY_THRESHOLD:
7250 			case EXECUTION_COUNT:
7251 			case QUERY_CAPTURE_POLICY:
7252 			case WAIT_STATS_CAPTURE_MODE:
7253 			case MAX_PLANS_PER_QUERY:
7254 			case QUERY_CAPTURE_MODE:
7255 			case SIZE_BASED_CLEANUP_MODE:
7256 			case INTERVAL_LENGTH_MINUTES:
7257 			case MAX_STORAGE_SIZE_MB:
7258 			case DATA_FLUSH_INTERVAL_SECONDS:
7259 			case CLEANUP_POLICY:
7260 			case CUSTOM:
7261 			case STALE_QUERY_THRESHOLD_DAYS:
7262 			case OPERATION_MODE:
7263 			case QUERY_STORE:
7264 			case CURSOR_DEFAULT:
7265 			case GLOBAL:
7266 			case CURSOR_CLOSE_ON_COMMIT:
7267 			case HOURS:
7268 			case CHANGE_RETENTION:
7269 			case AUTO_CLEANUP:
7270 			case CHANGE_TRACKING:
7271 			case AUTOMATIC_TUNING:
7272 			case FORCE_LAST_GOOD_PLAN:
7273 			case AUTO_UPDATE_STATISTICS_ASYNC:
7274 			case AUTO_UPDATE_STATISTICS:
7275 			case AUTO_SHRINK:
7276 			case AUTO_CREATE_STATISTICS:
7277 			case INCREMENTAL:
7278 			case AUTO_CLOSE:
7279 			case DATA_RETENTION:
7280 			case TEMPORAL_HISTORY_RETENTION:
7281 			case EDITION:
7282 			case MIXED_PAGE_ALLOCATION:
7283 			case DISABLED:
7284 			case ALLOWED:
7285 			case HADR:
7286 			case MULTI_USER:
7287 			case RESTRICTED_USER:
7288 			case SINGLE_USER:
7289 			case OFFLINE:
7290 			case EMERGENCY:
7291 			case SUSPEND:
7292 			case DATE_CORRELATION_OPTIMIZATION:
7293 			case ELASTIC_POOL:
7294 			case SERVICE_OBJECTIVE:
7295 			case DATABASE_NAME:
7296 			case ALLOW_CONNECTIONS:
7297 			case GEO:
7298 			case NAMED:
7299 			case DATEFIRST:
7300 			case BACKUP_STORAGE_REDUNDANCY:
7301 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
7302 			case SECONDARY:
7303 			case FAILOVER:
7304 			case DEFAULT_FULLTEXT_LANGUAGE:
7305 			case DEFAULT_LANGUAGE:
7306 			case INLINE:
7307 			case NESTED_TRIGGERS:
7308 			case TRANSFORM_NOISE_WORDS:
7309 			case TWO_DIGIT_YEAR_CUTOFF:
7310 			case PERSISTENT_LOG_BUFFER:
7311 			case DIRECTORY_NAME:
7312 			case DATEFORMAT:
7313 			case DELAYED_DURABILITY:
7314 			case AUTHORIZATION:
7315 			case TRANSFER:
7316 			case SEARCH:
7317 			case MEMBER:
7318 			case IDENTIFIER_:
7319 			case DELIMITED_IDENTIFIER_:
7320 			case STRING_:
7321 			case NUMBER_:
7322 			case HEX_DIGIT_:
7323 			case BIT_NUM_:
7324 			case NCHAR_TEXT:
7325 				{
7326 				setState(1491);
7327 				expr(0);
7328 				setState(1496);
7329 				_errHandler.sync(this);
7330 				_la = _input.LA(1);
7331 				while (_la==COMMA_) {
7332 					{
7333 					{
7334 					setState(1492);
7335 					match(COMMA_);
7336 					setState(1493);
7337 					expr(0);
7338 					}
7339 					}
7340 					setState(1498);
7341 					_errHandler.sync(this);
7342 					_la = _input.LA(1);
7343 				}
7344 				}
7345 				break;
7346 			case ASTERISK_:
7347 				{
7348 				setState(1499);
7349 				match(ASTERISK_);
7350 				}
7351 				break;
7352 			case RP_:
7353 				break;
7354 			default:
7355 				break;
7356 			}
7357 			setState(1502);
7358 			match(RP_);
7359 			}
7360 		}
7361 		catch (RecognitionException re) {
7362 			_localctx.exception = re;
7363 			_errHandler.reportError(this, re);
7364 			_errHandler.recover(this, re);
7365 		}
7366 		finally {
7367 			exitRule();
7368 		}
7369 		return _localctx;
7370 	}
7371 
7372 	public static class AggregationFunctionNameContext extends ParserRuleContext {
7373 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
7374 		public TerminalNode MIN() { return getToken(SQLServerStatementParser.MIN, 0); }
7375 		public TerminalNode SUM() { return getToken(SQLServerStatementParser.SUM, 0); }
7376 		public TerminalNode COUNT() { return getToken(SQLServerStatementParser.COUNT, 0); }
7377 		public TerminalNode AVG() { return getToken(SQLServerStatementParser.AVG, 0); }
7378 		public AggregationFunctionNameContext(ParserRuleContext parent, int invokingState) {
7379 			super(parent, invokingState);
7380 		}
7381 		@Override public int getRuleIndex() { return RULE_aggregationFunctionName; }
7382 		@Override
7383 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7384 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationFunctionName(this);
7385 			else return visitor.visitChildren(this);
7386 		}
7387 	}
7388 
7389 	public final AggregationFunctionNameContext aggregationFunctionName() throws RecognitionException {
7390 		AggregationFunctionNameContext _localctx = new AggregationFunctionNameContext(_ctx, getState());
7391 		enterRule(_localctx, 120, RULE_aggregationFunctionName);
7392 		int _la;
7393 		try {
7394 			enterOuterAlt(_localctx, 1);
7395 			{
7396 			setState(1504);
7397 			_la = _input.LA(1);
7398 			if ( !(((((_la - 147)) & ~0x3f) == 0 && ((1L << (_la - 147)) & ((1L << (MAX - 147)) | (1L << (MIN - 147)) | (1L << (SUM - 147)) | (1L << (COUNT - 147)) | (1L << (AVG - 147)))) != 0)) ) {
7399 			_errHandler.recoverInline(this);
7400 			}
7401 			else {
7402 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
7403 				_errHandler.reportMatch(this);
7404 				consume();
7405 			}
7406 			}
7407 		}
7408 		catch (RecognitionException re) {
7409 			_localctx.exception = re;
7410 			_errHandler.reportError(this, re);
7411 			_errHandler.recover(this, re);
7412 		}
7413 		finally {
7414 			exitRule();
7415 		}
7416 		return _localctx;
7417 	}
7418 
7419 	public static class DistinctContext extends ParserRuleContext {
7420 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
7421 		public DistinctContext(ParserRuleContext parent, int invokingState) {
7422 			super(parent, invokingState);
7423 		}
7424 		@Override public int getRuleIndex() { return RULE_distinct; }
7425 		@Override
7426 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7427 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistinct(this);
7428 			else return visitor.visitChildren(this);
7429 		}
7430 	}
7431 
7432 	public final DistinctContext distinct() throws RecognitionException {
7433 		DistinctContext _localctx = new DistinctContext(_ctx, getState());
7434 		enterRule(_localctx, 122, RULE_distinct);
7435 		try {
7436 			enterOuterAlt(_localctx, 1);
7437 			{
7438 			setState(1506);
7439 			match(DISTINCT);
7440 			}
7441 		}
7442 		catch (RecognitionException re) {
7443 			_localctx.exception = re;
7444 			_errHandler.reportError(this, re);
7445 			_errHandler.recover(this, re);
7446 		}
7447 		finally {
7448 			exitRule();
7449 		}
7450 		return _localctx;
7451 	}
7452 
7453 	public static class SpecialFunctionContext extends ParserRuleContext {
7454 		public CastFunctionContext castFunction() {
7455 			return getRuleContext(CastFunctionContext.class,0);
7456 		}
7457 		public CharFunctionContext charFunction() {
7458 			return getRuleContext(CharFunctionContext.class,0);
7459 		}
7460 		public ConvertFunctionContext convertFunction() {
7461 			return getRuleContext(ConvertFunctionContext.class,0);
7462 		}
7463 		public SpecialFunctionContext(ParserRuleContext parent, int invokingState) {
7464 			super(parent, invokingState);
7465 		}
7466 		@Override public int getRuleIndex() { return RULE_specialFunction; }
7467 		@Override
7468 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7469 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSpecialFunction(this);
7470 			else return visitor.visitChildren(this);
7471 		}
7472 	}
7473 
7474 	public final SpecialFunctionContext specialFunction() throws RecognitionException {
7475 		SpecialFunctionContext _localctx = new SpecialFunctionContext(_ctx, getState());
7476 		enterRule(_localctx, 124, RULE_specialFunction);
7477 		try {
7478 			setState(1511);
7479 			_errHandler.sync(this);
7480 			switch (_input.LA(1)) {
7481 			case CAST:
7482 				enterOuterAlt(_localctx, 1);
7483 				{
7484 				setState(1508);
7485 				castFunction();
7486 				}
7487 				break;
7488 			case CHAR:
7489 				enterOuterAlt(_localctx, 2);
7490 				{
7491 				setState(1509);
7492 				charFunction();
7493 				}
7494 				break;
7495 			case CONVERT:
7496 				enterOuterAlt(_localctx, 3);
7497 				{
7498 				setState(1510);
7499 				convertFunction();
7500 				}
7501 				break;
7502 			default:
7503 				throw new NoViableAltException(this);
7504 			}
7505 		}
7506 		catch (RecognitionException re) {
7507 			_localctx.exception = re;
7508 			_errHandler.reportError(this, re);
7509 			_errHandler.recover(this, re);
7510 		}
7511 		finally {
7512 			exitRule();
7513 		}
7514 		return _localctx;
7515 	}
7516 
7517 	public static class CastFunctionContext extends ParserRuleContext {
7518 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
7519 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7520 		public ExprContext expr() {
7521 			return getRuleContext(ExprContext.class,0);
7522 		}
7523 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
7524 		public DataTypeContext dataType() {
7525 			return getRuleContext(DataTypeContext.class,0);
7526 		}
7527 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7528 		public CastFunctionContext(ParserRuleContext parent, int invokingState) {
7529 			super(parent, invokingState);
7530 		}
7531 		@Override public int getRuleIndex() { return RULE_castFunction; }
7532 		@Override
7533 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7534 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCastFunction(this);
7535 			else return visitor.visitChildren(this);
7536 		}
7537 	}
7538 
7539 	public final CastFunctionContext castFunction() throws RecognitionException {
7540 		CastFunctionContext _localctx = new CastFunctionContext(_ctx, getState());
7541 		enterRule(_localctx, 126, RULE_castFunction);
7542 		try {
7543 			enterOuterAlt(_localctx, 1);
7544 			{
7545 			setState(1513);
7546 			match(CAST);
7547 			setState(1514);
7548 			match(LP_);
7549 			setState(1515);
7550 			expr(0);
7551 			setState(1516);
7552 			match(AS);
7553 			setState(1517);
7554 			dataType();
7555 			setState(1518);
7556 			match(RP_);
7557 			}
7558 		}
7559 		catch (RecognitionException re) {
7560 			_localctx.exception = re;
7561 			_errHandler.reportError(this, re);
7562 			_errHandler.recover(this, re);
7563 		}
7564 		finally {
7565 			exitRule();
7566 		}
7567 		return _localctx;
7568 	}
7569 
7570 	public static class ConvertFunctionContext extends ParserRuleContext {
7571 		public TerminalNode CONVERT() { return getToken(SQLServerStatementParser.CONVERT, 0); }
7572 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7573 		public DataTypeContext dataType() {
7574 			return getRuleContext(DataTypeContext.class,0);
7575 		}
7576 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7577 		public TerminalNode COMMA_(int i) {
7578 			return getToken(SQLServerStatementParser.COMMA_, i);
7579 		}
7580 		public ExprContext expr() {
7581 			return getRuleContext(ExprContext.class,0);
7582 		}
7583 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7584 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
7585 		public ConvertFunctionContext(ParserRuleContext parent, int invokingState) {
7586 			super(parent, invokingState);
7587 		}
7588 		@Override public int getRuleIndex() { return RULE_convertFunction; }
7589 		@Override
7590 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7591 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConvertFunction(this);
7592 			else return visitor.visitChildren(this);
7593 		}
7594 	}
7595 
7596 	public final ConvertFunctionContext convertFunction() throws RecognitionException {
7597 		ConvertFunctionContext _localctx = new ConvertFunctionContext(_ctx, getState());
7598 		enterRule(_localctx, 128, RULE_convertFunction);
7599 		int _la;
7600 		try {
7601 			enterOuterAlt(_localctx, 1);
7602 			{
7603 			setState(1520);
7604 			match(CONVERT);
7605 			setState(1521);
7606 			match(LP_);
7607 			setState(1522);
7608 			dataType();
7609 			setState(1523);
7610 			match(COMMA_);
7611 			setState(1524);
7612 			expr(0);
7613 			setState(1527);
7614 			_errHandler.sync(this);
7615 			_la = _input.LA(1);
7616 			if (_la==COMMA_) {
7617 				{
7618 				setState(1525);
7619 				match(COMMA_);
7620 				setState(1526);
7621 				match(NUMBER_);
7622 				}
7623 			}
7624 
7625 			setState(1529);
7626 			match(RP_);
7627 			}
7628 		}
7629 		catch (RecognitionException re) {
7630 			_localctx.exception = re;
7631 			_errHandler.reportError(this, re);
7632 			_errHandler.recover(this, re);
7633 		}
7634 		finally {
7635 			exitRule();
7636 		}
7637 		return _localctx;
7638 	}
7639 
7640 	public static class CharFunctionContext extends ParserRuleContext {
7641 		public TerminalNode CHAR() { return getToken(SQLServerStatementParser.CHAR, 0); }
7642 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7643 		public List<ExprContext> expr() {
7644 			return getRuleContexts(ExprContext.class);
7645 		}
7646 		public ExprContext expr(int i) {
7647 			return getRuleContext(ExprContext.class,i);
7648 		}
7649 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7650 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7651 		public TerminalNode COMMA_(int i) {
7652 			return getToken(SQLServerStatementParser.COMMA_, i);
7653 		}
7654 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
7655 		public IgnoredIdentifierContext ignoredIdentifier() {
7656 			return getRuleContext(IgnoredIdentifierContext.class,0);
7657 		}
7658 		public CharFunctionContext(ParserRuleContext parent, int invokingState) {
7659 			super(parent, invokingState);
7660 		}
7661 		@Override public int getRuleIndex() { return RULE_charFunction; }
7662 		@Override
7663 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7664 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCharFunction(this);
7665 			else return visitor.visitChildren(this);
7666 		}
7667 	}
7668 
7669 	public final CharFunctionContext charFunction() throws RecognitionException {
7670 		CharFunctionContext _localctx = new CharFunctionContext(_ctx, getState());
7671 		enterRule(_localctx, 130, RULE_charFunction);
7672 		int _la;
7673 		try {
7674 			enterOuterAlt(_localctx, 1);
7675 			{
7676 			setState(1531);
7677 			match(CHAR);
7678 			setState(1532);
7679 			match(LP_);
7680 			setState(1533);
7681 			expr(0);
7682 			setState(1538);
7683 			_errHandler.sync(this);
7684 			_la = _input.LA(1);
7685 			while (_la==COMMA_) {
7686 				{
7687 				{
7688 				setState(1534);
7689 				match(COMMA_);
7690 				setState(1535);
7691 				expr(0);
7692 				}
7693 				}
7694 				setState(1540);
7695 				_errHandler.sync(this);
7696 				_la = _input.LA(1);
7697 			}
7698 			setState(1543);
7699 			_errHandler.sync(this);
7700 			_la = _input.LA(1);
7701 			if (_la==USING) {
7702 				{
7703 				setState(1541);
7704 				match(USING);
7705 				setState(1542);
7706 				ignoredIdentifier();
7707 				}
7708 			}
7709 
7710 			setState(1545);
7711 			match(RP_);
7712 			}
7713 		}
7714 		catch (RecognitionException re) {
7715 			_localctx.exception = re;
7716 			_errHandler.reportError(this, re);
7717 			_errHandler.recover(this, re);
7718 		}
7719 		finally {
7720 			exitRule();
7721 		}
7722 		return _localctx;
7723 	}
7724 
7725 	public static class RegularFunctionContext extends ParserRuleContext {
7726 		public RegularFunctionNameContext regularFunctionName() {
7727 			return getRuleContext(RegularFunctionNameContext.class,0);
7728 		}
7729 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7730 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7731 		public List<ExprContext> expr() {
7732 			return getRuleContexts(ExprContext.class);
7733 		}
7734 		public ExprContext expr(int i) {
7735 			return getRuleContext(ExprContext.class,i);
7736 		}
7737 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
7738 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7739 		public TerminalNode COMMA_(int i) {
7740 			return getToken(SQLServerStatementParser.COMMA_, i);
7741 		}
7742 		public RegularFunctionContext(ParserRuleContext parent, int invokingState) {
7743 			super(parent, invokingState);
7744 		}
7745 		@Override public int getRuleIndex() { return RULE_regularFunction; }
7746 		@Override
7747 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7748 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularFunction(this);
7749 			else return visitor.visitChildren(this);
7750 		}
7751 	}
7752 
7753 	public final RegularFunctionContext regularFunction() throws RecognitionException {
7754 		RegularFunctionContext _localctx = new RegularFunctionContext(_ctx, getState());
7755 		enterRule(_localctx, 132, RULE_regularFunction);
7756 		int _la;
7757 		try {
7758 			enterOuterAlt(_localctx, 1);
7759 			{
7760 			setState(1547);
7761 			regularFunctionName();
7762 			setState(1548);
7763 			match(LP_);
7764 			setState(1558);
7765 			_errHandler.sync(this);
7766 			switch (_input.LA(1)) {
7767 			case NOT_:
7768 			case TILDE_:
7769 			case PLUS_:
7770 			case MINUS_:
7771 			case LP_:
7772 			case LBE_:
7773 			case QUESTION_:
7774 			case DOLLAR_:
7775 			case TRUNCATE:
7776 			case SCHEMA:
7777 			case FUNCTION:
7778 			case TRIGGER:
7779 			case CASE:
7780 			case CAST:
7781 			case IF:
7782 			case NOT:
7783 			case NULL:
7784 			case TRUE:
7785 			case FALSE:
7786 			case EXISTS:
7787 			case GROUP:
7788 			case LIMIT:
7789 			case OFFSET:
7790 			case SAVEPOINT:
7791 			case BOOLEAN:
7792 			case CHAR:
7793 			case ARRAY:
7794 			case INTERVAL:
7795 			case DATE:
7796 			case TIME:
7797 			case TIMESTAMP:
7798 			case LOCALTIME:
7799 			case LOCALTIMESTAMP:
7800 			case QUARTER:
7801 			case WEEK:
7802 			case DAY:
7803 			case MICROSECOND:
7804 			case MAX:
7805 			case MIN:
7806 			case SUM:
7807 			case COUNT:
7808 			case AVG:
7809 			case ENABLE:
7810 			case DISABLE:
7811 			case INSTANCE:
7812 			case DO:
7813 			case DEFINER:
7814 			case SQL:
7815 			case CASCADED:
7816 			case LOCAL:
7817 			case NEXT:
7818 			case NAME:
7819 			case INTEGER:
7820 			case TYPE:
7821 			case READ_ONLY:
7822 			case DATABASE:
7823 			case DATEPART:
7824 			case PASSWORD:
7825 			case BINARY:
7826 			case HIDDEN_:
7827 			case MOD:
7828 			case PARTITION:
7829 			case PARTITIONS:
7830 			case TOP:
7831 			case ROW:
7832 			case ROWS:
7833 			case XOR:
7834 			case ALWAYS:
7835 			case ROLE:
7836 			case START:
7837 			case ALGORITHM:
7838 			case AUTO:
7839 			case BLOCKERS:
7840 			case CLUSTERED:
7841 			case NONCLUSTERED:
7842 			case COLUMNSTORE:
7843 			case CONTENT:
7844 			case CONVERT:
7845 			case YEARS:
7846 			case MONTHS:
7847 			case WEEKS:
7848 			case DAYS:
7849 			case MINUTES:
7850 			case DENY:
7851 			case DETERMINISTIC:
7852 			case DISTRIBUTION:
7853 			case DOCUMENT:
7854 			case DURABILITY:
7855 			case ENCRYPTED:
7856 			case FILESTREAM:
7857 			case FILETABLE:
7858 			case FILLFACTOR:
7859 			case FOLLOWING:
7860 			case HASH:
7861 			case HEAP:
7862 			case INBOUND:
7863 			case OUTBOUND:
7864 			case UNBOUNDED:
7865 			case INFINITE:
7866 			case LOGIN:
7867 			case MASKED:
7868 			case MAXDOP:
7869 			case MOVE:
7870 			case NOCHECK:
7871 			case OBJECT:
7872 			case OFF:
7873 			case ONLINE:
7874 			case OVER:
7875 			case PAGE:
7876 			case PAUSED:
7877 			case PERIOD:
7878 			case PERSISTED:
7879 			case PRECEDING:
7880 			case RANDOMIZED:
7881 			case RANGE:
7882 			case REBUILD:
7883 			case REPLICATE:
7884 			case REPLICATION:
7885 			case RESUMABLE:
7886 			case ROWGUIDCOL:
7887 			case SAVE:
7888 			case SELF:
7889 			case SPARSE:
7890 			case SWITCH:
7891 			case TRAN:
7892 			case TRANCOUNT:
7893 			case CONTROL:
7894 			case CONCAT:
7895 			case TAKE:
7896 			case OWNERSHIP:
7897 			case DEFINITION:
7898 			case APPLICATION:
7899 			case ASSEMBLY:
7900 			case SYMMETRIC:
7901 			case ASYMMETRIC:
7902 			case SERVER:
7903 			case RECEIVE:
7904 			case CHANGE:
7905 			case TRACE:
7906 			case TRACKING:
7907 			case RESOURCES:
7908 			case SETTINGS:
7909 			case STATE:
7910 			case AVAILABILITY:
7911 			case CREDENTIAL:
7912 			case ENDPOINT:
7913 			case EVENT:
7914 			case NOTIFICATION:
7915 			case LINKED:
7916 			case AUDIT:
7917 			case DDL:
7918 			case XML:
7919 			case IMPERSONATE:
7920 			case SECURABLES:
7921 			case AUTHENTICATE:
7922 			case EXTERNAL:
7923 			case ACCESS:
7924 			case ADMINISTER:
7925 			case BULK:
7926 			case OPERATIONS:
7927 			case UNSAFE:
7928 			case SHUTDOWN:
7929 			case SCOPED:
7930 			case CONFIGURATION:
7931 			case DATASPACE:
7932 			case SERVICE:
7933 			case CERTIFICATE:
7934 			case CONTRACT:
7935 			case ENCRYPTION:
7936 			case MASTER:
7937 			case DATA:
7938 			case SOURCE:
7939 			case FILE:
7940 			case FORMAT:
7941 			case LIBRARY:
7942 			case FULLTEXT:
7943 			case MASK:
7944 			case UNMASK:
7945 			case MESSAGE:
7946 			case REMOTE:
7947 			case BINDING:
7948 			case ROUTE:
7949 			case SECURITY:
7950 			case POLICY:
7951 			case AGGREGATE:
7952 			case QUEUE:
7953 			case RULE:
7954 			case SYNONYM:
7955 			case COLLECTION:
7956 			case SCRIPT:
7957 			case KILL:
7958 			case BACKUP:
7959 			case LOG:
7960 			case SHOWPLAN:
7961 			case SUBSCRIBE:
7962 			case QUERY:
7963 			case NOTIFICATIONS:
7964 			case CHECKPOINT:
7965 			case SEQUENCE:
7966 			case ABORT_AFTER_WAIT:
7967 			case ALLOW_PAGE_LOCKS:
7968 			case ALLOW_ROW_LOCKS:
7969 			case ALL_SPARSE_COLUMNS:
7970 			case BUCKET_COUNT:
7971 			case COLUMNSTORE_ARCHIVE:
7972 			case COLUMN_ENCRYPTION_KEY:
7973 			case COLUMN_SET:
7974 			case COMPRESSION_DELAY:
7975 			case DATABASE_DEAULT:
7976 			case DATA_COMPRESSION:
7977 			case DATA_CONSISTENCY_CHECK:
7978 			case ENCRYPTION_TYPE:
7979 			case SYSTEM_TIME:
7980 			case SYSTEM_VERSIONING:
7981 			case TEXTIMAGE_ON:
7982 			case WAIT_AT_LOW_PRIORITY:
7983 			case STATISTICS_INCREMENTAL:
7984 			case STATISTICS_NORECOMPUTE:
7985 			case ROUND_ROBIN:
7986 			case SCHEMA_AND_DATA:
7987 			case SCHEMA_ONLY:
7988 			case SORT_IN_TEMPDB:
7989 			case IGNORE_DUP_KEY:
7990 			case IMPLICIT_TRANSACTIONS:
7991 			case MAX_DURATION:
7992 			case MEMORY_OPTIMIZED:
7993 			case MIGRATION_STATE:
7994 			case PAD_INDEX:
7995 			case REMOTE_DATA_ARCHIVE:
7996 			case FILESTREAM_ON:
7997 			case FILETABLE_COLLATE_FILENAME:
7998 			case FILETABLE_DIRECTORY:
7999 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
8000 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
8001 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
8002 			case FILTER_PREDICATE:
8003 			case HISTORY_RETENTION_PERIOD:
8004 			case HISTORY_TABLE:
8005 			case LOCK_ESCALATION:
8006 			case DROP_EXISTING:
8007 			case ROW_NUMBER:
8008 			case FIRST:
8009 			case DATETIME2:
8010 			case OUTPUT:
8011 			case INSERTED:
8012 			case DELETED:
8013 			case FILENAME:
8014 			case MAXSIZE:
8015 			case FILEGROWTH:
8016 			case UNLIMITED:
8017 			case KB:
8018 			case MB:
8019 			case GB:
8020 			case TB:
8021 			case MEMORY_OPTIMIZED_DATA:
8022 			case FILEGROUP:
8023 			case NON_TRANSACTED_ACCESS:
8024 			case DB_CHAINING:
8025 			case TRUSTWORTHY:
8026 			case FORWARD_ONLY:
8027 			case KEYSET:
8028 			case FAST_FORWARD:
8029 			case SCROLL_LOCKS:
8030 			case OPTIMISTIC:
8031 			case TYPE_WARNING:
8032 			case SCHEMABINDING:
8033 			case CALLER:
8034 			case OWNER:
8035 			case SNAPSHOT:
8036 			case REPEATABLE:
8037 			case SERIALIZABLE:
8038 			case NATIVE_COMPILATION:
8039 			case VIEW_METADATA:
8040 			case INSTEAD:
8041 			case APPEND:
8042 			case INCREMENT:
8043 			case CACHE:
8044 			case MINVALUE:
8045 			case MAXVALUE:
8046 			case RESTART:
8047 			case LOB_COMPACTION:
8048 			case COMPRESS_ALL_ROW_GROUPS:
8049 			case REORGANIZE:
8050 			case RESUME:
8051 			case PAUSE:
8052 			case ABORT:
8053 			case ACCELERATED_DATABASE_RECOVERY:
8054 			case PERSISTENT_VERSION_STORE_FILEGROUP:
8055 			case IMMEDIATE:
8056 			case NO_WAIT:
8057 			case TARGET_RECOVERY_TIME:
8058 			case SECONDS:
8059 			case HONOR_BROKER_PRIORITY:
8060 			case ERROR_BROKER_CONVERSATIONS:
8061 			case NEW_BROKER:
8062 			case DISABLE_BROKER:
8063 			case ENABLE_BROKER:
8064 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
8065 			case READ_COMMITTED_SNAPSHOT:
8066 			case ALLOW_SNAPSHOT_ISOLATION:
8067 			case RECURSIVE_TRIGGERS:
8068 			case QUOTED_IDENTIFIER:
8069 			case NUMERIC_ROUNDABORT:
8070 			case CONCAT_NULL_YIELDS_NULL:
8071 			case COMPATIBILITY_LEVEL:
8072 			case ARITHABORT:
8073 			case ANSI_WARNINGS:
8074 			case ANSI_PADDING:
8075 			case ANSI_NULLS:
8076 			case ANSI_NULL_DEFAULT:
8077 			case PAGE_VERIFY:
8078 			case CHECKSUM:
8079 			case TORN_PAGE_DETECTION:
8080 			case BULK_LOGGED:
8081 			case RECOVERY:
8082 			case TOTAL_EXECUTION_CPU_TIME_MS:
8083 			case TOTAL_COMPILE_CPU_TIME_MS:
8084 			case STALE_CAPTURE_POLICY_THRESHOLD:
8085 			case EXECUTION_COUNT:
8086 			case QUERY_CAPTURE_POLICY:
8087 			case WAIT_STATS_CAPTURE_MODE:
8088 			case MAX_PLANS_PER_QUERY:
8089 			case QUERY_CAPTURE_MODE:
8090 			case SIZE_BASED_CLEANUP_MODE:
8091 			case INTERVAL_LENGTH_MINUTES:
8092 			case MAX_STORAGE_SIZE_MB:
8093 			case DATA_FLUSH_INTERVAL_SECONDS:
8094 			case CLEANUP_POLICY:
8095 			case CUSTOM:
8096 			case STALE_QUERY_THRESHOLD_DAYS:
8097 			case OPERATION_MODE:
8098 			case QUERY_STORE:
8099 			case CURSOR_DEFAULT:
8100 			case GLOBAL:
8101 			case CURSOR_CLOSE_ON_COMMIT:
8102 			case HOURS:
8103 			case CHANGE_RETENTION:
8104 			case AUTO_CLEANUP:
8105 			case CHANGE_TRACKING:
8106 			case AUTOMATIC_TUNING:
8107 			case FORCE_LAST_GOOD_PLAN:
8108 			case AUTO_UPDATE_STATISTICS_ASYNC:
8109 			case AUTO_UPDATE_STATISTICS:
8110 			case AUTO_SHRINK:
8111 			case AUTO_CREATE_STATISTICS:
8112 			case INCREMENTAL:
8113 			case AUTO_CLOSE:
8114 			case DATA_RETENTION:
8115 			case TEMPORAL_HISTORY_RETENTION:
8116 			case EDITION:
8117 			case MIXED_PAGE_ALLOCATION:
8118 			case DISABLED:
8119 			case ALLOWED:
8120 			case HADR:
8121 			case MULTI_USER:
8122 			case RESTRICTED_USER:
8123 			case SINGLE_USER:
8124 			case OFFLINE:
8125 			case EMERGENCY:
8126 			case SUSPEND:
8127 			case DATE_CORRELATION_OPTIMIZATION:
8128 			case ELASTIC_POOL:
8129 			case SERVICE_OBJECTIVE:
8130 			case DATABASE_NAME:
8131 			case ALLOW_CONNECTIONS:
8132 			case GEO:
8133 			case NAMED:
8134 			case DATEFIRST:
8135 			case BACKUP_STORAGE_REDUNDANCY:
8136 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
8137 			case SECONDARY:
8138 			case FAILOVER:
8139 			case DEFAULT_FULLTEXT_LANGUAGE:
8140 			case DEFAULT_LANGUAGE:
8141 			case INLINE:
8142 			case NESTED_TRIGGERS:
8143 			case TRANSFORM_NOISE_WORDS:
8144 			case TWO_DIGIT_YEAR_CUTOFF:
8145 			case PERSISTENT_LOG_BUFFER:
8146 			case DIRECTORY_NAME:
8147 			case DATEFORMAT:
8148 			case DELAYED_DURABILITY:
8149 			case AUTHORIZATION:
8150 			case TRANSFER:
8151 			case SEARCH:
8152 			case MEMBER:
8153 			case IDENTIFIER_:
8154 			case DELIMITED_IDENTIFIER_:
8155 			case STRING_:
8156 			case NUMBER_:
8157 			case HEX_DIGIT_:
8158 			case BIT_NUM_:
8159 			case NCHAR_TEXT:
8160 				{
8161 				setState(1549);
8162 				expr(0);
8163 				setState(1554);
8164 				_errHandler.sync(this);
8165 				_la = _input.LA(1);
8166 				while (_la==COMMA_) {
8167 					{
8168 					{
8169 					setState(1550);
8170 					match(COMMA_);
8171 					setState(1551);
8172 					expr(0);
8173 					}
8174 					}
8175 					setState(1556);
8176 					_errHandler.sync(this);
8177 					_la = _input.LA(1);
8178 				}
8179 				}
8180 				break;
8181 			case ASTERISK_:
8182 				{
8183 				setState(1557);
8184 				match(ASTERISK_);
8185 				}
8186 				break;
8187 			case RP_:
8188 				break;
8189 			default:
8190 				break;
8191 			}
8192 			setState(1560);
8193 			match(RP_);
8194 			}
8195 		}
8196 		catch (RecognitionException re) {
8197 			_localctx.exception = re;
8198 			_errHandler.reportError(this, re);
8199 			_errHandler.recover(this, re);
8200 		}
8201 		finally {
8202 			exitRule();
8203 		}
8204 		return _localctx;
8205 	}
8206 
8207 	public static class RegularFunctionNameContext extends ParserRuleContext {
8208 		public IdentifierContext identifier() {
8209 			return getRuleContext(IdentifierContext.class,0);
8210 		}
8211 		public OwnerContext owner() {
8212 			return getRuleContext(OwnerContext.class,0);
8213 		}
8214 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
8215 		public TerminalNode IF() { return getToken(SQLServerStatementParser.IF, 0); }
8216 		public TerminalNode LOCALTIME() { return getToken(SQLServerStatementParser.LOCALTIME, 0); }
8217 		public TerminalNode LOCALTIMESTAMP() { return getToken(SQLServerStatementParser.LOCALTIMESTAMP, 0); }
8218 		public TerminalNode INTERVAL() { return getToken(SQLServerStatementParser.INTERVAL, 0); }
8219 		public RegularFunctionNameContext(ParserRuleContext parent, int invokingState) {
8220 			super(parent, invokingState);
8221 		}
8222 		@Override public int getRuleIndex() { return RULE_regularFunctionName; }
8223 		@Override
8224 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8225 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularFunctionName(this);
8226 			else return visitor.visitChildren(this);
8227 		}
8228 	}
8229 
8230 	public final RegularFunctionNameContext regularFunctionName() throws RecognitionException {
8231 		RegularFunctionNameContext _localctx = new RegularFunctionNameContext(_ctx, getState());
8232 		enterRule(_localctx, 134, RULE_regularFunctionName);
8233 		try {
8234 			setState(1572);
8235 			_errHandler.sync(this);
8236 			switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
8237 			case 1:
8238 				enterOuterAlt(_localctx, 1);
8239 				{
8240 				setState(1565);
8241 				_errHandler.sync(this);
8242 				switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) {
8243 				case 1:
8244 					{
8245 					setState(1562);
8246 					owner();
8247 					setState(1563);
8248 					match(DOT_);
8249 					}
8250 					break;
8251 				}
8252 				setState(1567);
8253 				identifier();
8254 				}
8255 				break;
8256 			case 2:
8257 				enterOuterAlt(_localctx, 2);
8258 				{
8259 				setState(1568);
8260 				match(IF);
8261 				}
8262 				break;
8263 			case 3:
8264 				enterOuterAlt(_localctx, 3);
8265 				{
8266 				setState(1569);
8267 				match(LOCALTIME);
8268 				}
8269 				break;
8270 			case 4:
8271 				enterOuterAlt(_localctx, 4);
8272 				{
8273 				setState(1570);
8274 				match(LOCALTIMESTAMP);
8275 				}
8276 				break;
8277 			case 5:
8278 				enterOuterAlt(_localctx, 5);
8279 				{
8280 				setState(1571);
8281 				match(INTERVAL);
8282 				}
8283 				break;
8284 			}
8285 		}
8286 		catch (RecognitionException re) {
8287 			_localctx.exception = re;
8288 			_errHandler.reportError(this, re);
8289 			_errHandler.recover(this, re);
8290 		}
8291 		finally {
8292 			exitRule();
8293 		}
8294 		return _localctx;
8295 	}
8296 
8297 	public static class CaseExpressionContext extends ParserRuleContext {
8298 		public TerminalNode CASE() { return getToken(SQLServerStatementParser.CASE, 0); }
8299 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
8300 		public SimpleExprContext simpleExpr() {
8301 			return getRuleContext(SimpleExprContext.class,0);
8302 		}
8303 		public List<CaseWhenContext> caseWhen() {
8304 			return getRuleContexts(CaseWhenContext.class);
8305 		}
8306 		public CaseWhenContext caseWhen(int i) {
8307 			return getRuleContext(CaseWhenContext.class,i);
8308 		}
8309 		public CaseElseContext caseElse() {
8310 			return getRuleContext(CaseElseContext.class,0);
8311 		}
8312 		public CaseExpressionContext(ParserRuleContext parent, int invokingState) {
8313 			super(parent, invokingState);
8314 		}
8315 		@Override public int getRuleIndex() { return RULE_caseExpression; }
8316 		@Override
8317 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8318 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseExpression(this);
8319 			else return visitor.visitChildren(this);
8320 		}
8321 	}
8322 
8323 	public final CaseExpressionContext caseExpression() throws RecognitionException {
8324 		CaseExpressionContext _localctx = new CaseExpressionContext(_ctx, getState());
8325 		enterRule(_localctx, 136, RULE_caseExpression);
8326 		int _la;
8327 		try {
8328 			enterOuterAlt(_localctx, 1);
8329 			{
8330 			setState(1574);
8331 			match(CASE);
8332 			setState(1576);
8333 			_errHandler.sync(this);
8334 			_la = _input.LA(1);
8335 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << TRUNCATE) | (1L << SCHEMA))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CASE - 69)) | (1L << (CAST - 69)) | (1L << (IF - 69)) | (1L << (NULL - 69)) | (1L << (TRUE - 69)) | (1L << (FALSE - 69)) | (1L << (EXISTS - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)) | (1L << (CHAR - 69)) | (1L << (ARRAY - 69)) | (1L << (INTERVAL - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (QUARTER - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)))) != 0) || ((((_la - 201)) & ~0x3f) == 0 && ((1L << (_la - 201)) & ((1L << (READ_ONLY - 201)) | (1L << (DATABASE - 201)) | (1L << (DATEPART - 201)) | (1L << (PASSWORD - 201)) | (1L << (BINARY - 201)) | (1L << (HIDDEN_ - 201)) | (1L << (MOD - 201)) | (1L << (PARTITION - 201)) | (1L << (PARTITIONS - 201)) | (1L << (TOP - 201)) | (1L << (ROW - 201)) | (1L << (ROWS - 201)) | (1L << (XOR - 201)) | (1L << (ALWAYS - 201)) | (1L << (ROLE - 201)) | (1L << (START - 201)) | (1L << (ALGORITHM - 201)) | (1L << (AUTO - 201)) | (1L << (BLOCKERS - 201)) | (1L << (CLUSTERED - 201)) | (1L << (NONCLUSTERED - 201)) | (1L << (COLUMNSTORE - 201)) | (1L << (CONTENT - 201)) | (1L << (CONVERT - 201)) | (1L << (YEARS - 201)) | (1L << (MONTHS - 201)) | (1L << (WEEKS - 201)) | (1L << (DAYS - 201)) | (1L << (MINUTES - 201)) | (1L << (DENY - 201)) | (1L << (DETERMINISTIC - 201)) | (1L << (DISTRIBUTION - 201)) | (1L << (DOCUMENT - 201)) | (1L << (DURABILITY - 201)) | (1L << (ENCRYPTED - 201)) | (1L << (FILESTREAM - 201)) | (1L << (FILETABLE - 201)) | (1L << (FILLFACTOR - 201)) | (1L << (FOLLOWING - 201)) | (1L << (HASH - 201)) | (1L << (HEAP - 201)))) != 0) || ((((_la - 266)) & ~0x3f) == 0 && ((1L << (_la - 266)) & ((1L << (INBOUND - 266)) | (1L << (OUTBOUND - 266)) | (1L << (UNBOUNDED - 266)) | (1L << (INFINITE - 266)) | (1L << (LOGIN - 266)) | (1L << (MASKED - 266)) | (1L << (MAXDOP - 266)) | (1L << (MOVE - 266)) | (1L << (NOCHECK - 266)) | (1L << (OBJECT - 266)) | (1L << (OFF - 266)) | (1L << (ONLINE - 266)) | (1L << (OVER - 266)) | (1L << (PAGE - 266)) | (1L << (PAUSED - 266)) | (1L << (PERIOD - 266)) | (1L << (PERSISTED - 266)) | (1L << (PRECEDING - 266)) | (1L << (RANDOMIZED - 266)) | (1L << (RANGE - 266)) | (1L << (REBUILD - 266)) | (1L << (REPLICATE - 266)) | (1L << (REPLICATION - 266)) | (1L << (RESUMABLE - 266)) | (1L << (ROWGUIDCOL - 266)) | (1L << (SAVE - 266)) | (1L << (SELF - 266)) | (1L << (SPARSE - 266)) | (1L << (SWITCH - 266)) | (1L << (TRAN - 266)) | (1L << (TRANCOUNT - 266)) | (1L << (CONTROL - 266)) | (1L << (CONCAT - 266)) | (1L << (TAKE - 266)) | (1L << (OWNERSHIP - 266)) | (1L << (DEFINITION - 266)) | (1L << (APPLICATION - 266)) | (1L << (ASSEMBLY - 266)) | (1L << (SYMMETRIC - 266)) | (1L << (ASYMMETRIC - 266)) | (1L << (SERVER - 266)) | (1L << (RECEIVE - 266)) | (1L << (CHANGE - 266)) | (1L << (TRACE - 266)) | (1L << (TRACKING - 266)) | (1L << (RESOURCES - 266)) | (1L << (SETTINGS - 266)) | (1L << (STATE - 266)) | (1L << (AVAILABILITY - 266)) | (1L << (CREDENTIAL - 266)) | (1L << (ENDPOINT - 266)) | (1L << (EVENT - 266)) | (1L << (NOTIFICATION - 266)) | (1L << (LINKED - 266)) | (1L << (AUDIT - 266)) | (1L << (DDL - 266)))) != 0) || ((((_la - 330)) & ~0x3f) == 0 && ((1L << (_la - 330)) & ((1L << (XML - 330)) | (1L << (IMPERSONATE - 330)) | (1L << (SECURABLES - 330)) | (1L << (AUTHENTICATE - 330)) | (1L << (EXTERNAL - 330)) | (1L << (ACCESS - 330)) | (1L << (ADMINISTER - 330)) | (1L << (BULK - 330)) | (1L << (OPERATIONS - 330)) | (1L << (UNSAFE - 330)) | (1L << (SHUTDOWN - 330)) | (1L << (SCOPED - 330)) | (1L << (CONFIGURATION - 330)) | (1L << (DATASPACE - 330)) | (1L << (SERVICE - 330)) | (1L << (CERTIFICATE - 330)) | (1L << (CONTRACT - 330)) | (1L << (ENCRYPTION - 330)) | (1L << (MASTER - 330)) | (1L << (DATA - 330)) | (1L << (SOURCE - 330)) | (1L << (FILE - 330)) | (1L << (FORMAT - 330)) | (1L << (LIBRARY - 330)) | (1L << (FULLTEXT - 330)) | (1L << (MASK - 330)) | (1L << (UNMASK - 330)) | (1L << (MESSAGE - 330)) | (1L << (REMOTE - 330)) | (1L << (BINDING - 330)) | (1L << (ROUTE - 330)) | (1L << (SECURITY - 330)) | (1L << (POLICY - 330)) | (1L << (AGGREGATE - 330)) | (1L << (QUEUE - 330)) | (1L << (RULE - 330)) | (1L << (SYNONYM - 330)) | (1L << (COLLECTION - 330)) | (1L << (SCRIPT - 330)) | (1L << (KILL - 330)) | (1L << (BACKUP - 330)) | (1L << (LOG - 330)) | (1L << (SHOWPLAN - 330)) | (1L << (SUBSCRIBE - 330)) | (1L << (QUERY - 330)) | (1L << (NOTIFICATIONS - 330)) | (1L << (CHECKPOINT - 330)) | (1L << (SEQUENCE - 330)) | (1L << (ABORT_AFTER_WAIT - 330)) | (1L << (ALLOW_PAGE_LOCKS - 330)) | (1L << (ALLOW_ROW_LOCKS - 330)) | (1L << (ALL_SPARSE_COLUMNS - 330)) | (1L << (BUCKET_COUNT - 330)) | (1L << (COLUMNSTORE_ARCHIVE - 330)) | (1L << (COLUMN_ENCRYPTION_KEY - 330)) | (1L << (COLUMN_SET - 330)) | (1L << (COMPRESSION_DELAY - 330)) | (1L << (DATABASE_DEAULT - 330)) | (1L << (DATA_COMPRESSION - 330)) | (1L << (DATA_CONSISTENCY_CHECK - 330)) | (1L << (ENCRYPTION_TYPE - 330)) | (1L << (SYSTEM_TIME - 330)) | (1L << (SYSTEM_VERSIONING - 330)) | (1L << (TEXTIMAGE_ON - 330)))) != 0) || ((((_la - 394)) & ~0x3f) == 0 && ((1L << (_la - 394)) & ((1L << (WAIT_AT_LOW_PRIORITY - 394)) | (1L << (STATISTICS_INCREMENTAL - 394)) | (1L << (STATISTICS_NORECOMPUTE - 394)) | (1L << (ROUND_ROBIN - 394)) | (1L << (SCHEMA_AND_DATA - 394)) | (1L << (SCHEMA_ONLY - 394)) | (1L << (SORT_IN_TEMPDB - 394)) | (1L << (IGNORE_DUP_KEY - 394)) | (1L << (IMPLICIT_TRANSACTIONS - 394)) | (1L << (MAX_DURATION - 394)) | (1L << (MEMORY_OPTIMIZED - 394)) | (1L << (MIGRATION_STATE - 394)) | (1L << (PAD_INDEX - 394)) | (1L << (REMOTE_DATA_ARCHIVE - 394)) | (1L << (FILESTREAM_ON - 394)) | (1L << (FILETABLE_COLLATE_FILENAME - 394)) | (1L << (FILETABLE_DIRECTORY - 394)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILTER_PREDICATE - 394)) | (1L << (HISTORY_RETENTION_PERIOD - 394)) | (1L << (HISTORY_TABLE - 394)) | (1L << (LOCK_ESCALATION - 394)) | (1L << (DROP_EXISTING - 394)) | (1L << (ROW_NUMBER - 394)) | (1L << (FIRST - 394)) | (1L << (DATETIME2 - 394)) | (1L << (OUTPUT - 394)) | (1L << (INSERTED - 394)) | (1L << (DELETED - 394)))) != 0) || ((((_la - 478)) & ~0x3f) == 0 && ((1L << (_la - 478)) & ((1L << (FILENAME - 478)) | (1L << (MAXSIZE - 478)) | (1L << (FILEGROWTH - 478)) | (1L << (UNLIMITED - 478)) | (1L << (KB - 478)) | (1L << (MB - 478)) | (1L << (GB - 478)) | (1L << (TB - 478)) | (1L << (MEMORY_OPTIMIZED_DATA - 478)) | (1L << (FILEGROUP - 478)) | (1L << (NON_TRANSACTED_ACCESS - 478)) | (1L << (DB_CHAINING - 478)) | (1L << (TRUSTWORTHY - 478)) | (1L << (FORWARD_ONLY - 478)) | (1L << (KEYSET - 478)) | (1L << (FAST_FORWARD - 478)) | (1L << (SCROLL_LOCKS - 478)) | (1L << (OPTIMISTIC - 478)) | (1L << (TYPE_WARNING - 478)) | (1L << (SCHEMABINDING - 478)) | (1L << (CALLER - 478)) | (1L << (OWNER - 478)) | (1L << (SNAPSHOT - 478)) | (1L << (REPEATABLE - 478)) | (1L << (SERIALIZABLE - 478)) | (1L << (NATIVE_COMPILATION - 478)) | (1L << (VIEW_METADATA - 478)) | (1L << (INSTEAD - 478)) | (1L << (APPEND - 478)) | (1L << (INCREMENT - 478)) | (1L << (CACHE - 478)) | (1L << (MINVALUE - 478)) | (1L << (MAXVALUE - 478)) | (1L << (RESTART - 478)) | (1L << (LOB_COMPACTION - 478)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 478)) | (1L << (REORGANIZE - 478)) | (1L << (RESUME - 478)) | (1L << (PAUSE - 478)) | (1L << (ABORT - 478)))) != 0) || ((((_la - 544)) & ~0x3f) == 0 && ((1L << (_la - 544)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 544)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 544)) | (1L << (IMMEDIATE - 544)) | (1L << (NO_WAIT - 544)) | (1L << (TARGET_RECOVERY_TIME - 544)) | (1L << (SECONDS - 544)) | (1L << (HONOR_BROKER_PRIORITY - 544)) | (1L << (ERROR_BROKER_CONVERSATIONS - 544)) | (1L << (NEW_BROKER - 544)) | (1L << (DISABLE_BROKER - 544)) | (1L << (ENABLE_BROKER - 544)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 544)) | (1L << (READ_COMMITTED_SNAPSHOT - 544)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 544)) | (1L << (RECURSIVE_TRIGGERS - 544)) | (1L << (QUOTED_IDENTIFIER - 544)) | (1L << (NUMERIC_ROUNDABORT - 544)) | (1L << (CONCAT_NULL_YIELDS_NULL - 544)) | (1L << (COMPATIBILITY_LEVEL - 544)) | (1L << (ARITHABORT - 544)) | (1L << (ANSI_WARNINGS - 544)) | (1L << (ANSI_PADDING - 544)) | (1L << (ANSI_NULLS - 544)) | (1L << (ANSI_NULL_DEFAULT - 544)) | (1L << (PAGE_VERIFY - 544)) | (1L << (CHECKSUM - 544)) | (1L << (TORN_PAGE_DETECTION - 544)) | (1L << (BULK_LOGGED - 544)) | (1L << (RECOVERY - 544)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 544)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 544)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 544)) | (1L << (EXECUTION_COUNT - 544)) | (1L << (QUERY_CAPTURE_POLICY - 544)) | (1L << (WAIT_STATS_CAPTURE_MODE - 544)) | (1L << (MAX_PLANS_PER_QUERY - 544)) | (1L << (QUERY_CAPTURE_MODE - 544)) | (1L << (SIZE_BASED_CLEANUP_MODE - 544)) | (1L << (INTERVAL_LENGTH_MINUTES - 544)) | (1L << (MAX_STORAGE_SIZE_MB - 544)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 544)) | (1L << (CLEANUP_POLICY - 544)) | (1L << (CUSTOM - 544)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 544)) | (1L << (OPERATION_MODE - 544)) | (1L << (QUERY_STORE - 544)) | (1L << (CURSOR_DEFAULT - 544)) | (1L << (GLOBAL - 544)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 544)) | (1L << (HOURS - 544)) | (1L << (CHANGE_RETENTION - 544)) | (1L << (AUTO_CLEANUP - 544)) | (1L << (CHANGE_TRACKING - 544)) | (1L << (AUTOMATIC_TUNING - 544)) | (1L << (FORCE_LAST_GOOD_PLAN - 544)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 544)) | (1L << (AUTO_UPDATE_STATISTICS - 544)) | (1L << (AUTO_SHRINK - 544)) | (1L << (AUTO_CREATE_STATISTICS - 544)) | (1L << (INCREMENTAL - 544)) | (1L << (AUTO_CLOSE - 544)) | (1L << (DATA_RETENTION - 544)) | (1L << (TEMPORAL_HISTORY_RETENTION - 544)) | (1L << (EDITION - 544)))) != 0) || ((((_la - 608)) & ~0x3f) == 0 && ((1L << (_la - 608)) & ((1L << (MIXED_PAGE_ALLOCATION - 608)) | (1L << (DISABLED - 608)) | (1L << (ALLOWED - 608)) | (1L << (HADR - 608)) | (1L << (MULTI_USER - 608)) | (1L << (RESTRICTED_USER - 608)) | (1L << (SINGLE_USER - 608)) | (1L << (OFFLINE - 608)) | (1L << (EMERGENCY - 608)) | (1L << (SUSPEND - 608)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 608)) | (1L << (ELASTIC_POOL - 608)) | (1L << (SERVICE_OBJECTIVE - 608)) | (1L << (DATABASE_NAME - 608)) | (1L << (ALLOW_CONNECTIONS - 608)) | (1L << (GEO - 608)) | (1L << (NAMED - 608)) | (1L << (DATEFIRST - 608)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 608)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 608)) | (1L << (SECONDARY - 608)) | (1L << (FAILOVER - 608)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 608)) | (1L << (DEFAULT_LANGUAGE - 608)) | (1L << (INLINE - 608)) | (1L << (NESTED_TRIGGERS - 608)) | (1L << (TRANSFORM_NOISE_WORDS - 608)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 608)) | (1L << (PERSISTENT_LOG_BUFFER - 608)) | (1L << (DIRECTORY_NAME - 608)) | (1L << (DATEFORMAT - 608)) | (1L << (DELAYED_DURABILITY - 608)) | (1L << (AUTHORIZATION - 608)) | (1L << (TRANSFER - 608)) | (1L << (SEARCH - 608)) | (1L << (MEMBER - 608)))) != 0) || ((((_la - 684)) & ~0x3f) == 0 && ((1L << (_la - 684)) & ((1L << (IDENTIFIER_ - 684)) | (1L << (DELIMITED_IDENTIFIER_ - 684)) | (1L << (STRING_ - 684)) | (1L << (NUMBER_ - 684)) | (1L << (HEX_DIGIT_ - 684)) | (1L << (BIT_NUM_ - 684)) | (1L << (NCHAR_TEXT - 684)))) != 0)) {
8336 				{
8337 				setState(1575);
8338 				simpleExpr(0);
8339 				}
8340 			}
8341 
8342 			setState(1579); 
8343 			_errHandler.sync(this);
8344 			_la = _input.LA(1);
8345 			do {
8346 				{
8347 				{
8348 				setState(1578);
8349 				caseWhen();
8350 				}
8351 				}
8352 				setState(1581); 
8353 				_errHandler.sync(this);
8354 				_la = _input.LA(1);
8355 			} while ( _la==WHEN );
8356 			setState(1584);
8357 			_errHandler.sync(this);
8358 			_la = _input.LA(1);
8359 			if (_la==ELSE) {
8360 				{
8361 				setState(1583);
8362 				caseElse();
8363 				}
8364 			}
8365 
8366 			setState(1586);
8367 			match(END);
8368 			}
8369 		}
8370 		catch (RecognitionException re) {
8371 			_localctx.exception = re;
8372 			_errHandler.reportError(this, re);
8373 			_errHandler.recover(this, re);
8374 		}
8375 		finally {
8376 			exitRule();
8377 		}
8378 		return _localctx;
8379 	}
8380 
8381 	public static class CaseWhenContext extends ParserRuleContext {
8382 		public TerminalNode WHEN() { return getToken(SQLServerStatementParser.WHEN, 0); }
8383 		public List<ExprContext> expr() {
8384 			return getRuleContexts(ExprContext.class);
8385 		}
8386 		public ExprContext expr(int i) {
8387 			return getRuleContext(ExprContext.class,i);
8388 		}
8389 		public TerminalNode THEN() { return getToken(SQLServerStatementParser.THEN, 0); }
8390 		public CaseWhenContext(ParserRuleContext parent, int invokingState) {
8391 			super(parent, invokingState);
8392 		}
8393 		@Override public int getRuleIndex() { return RULE_caseWhen; }
8394 		@Override
8395 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8396 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseWhen(this);
8397 			else return visitor.visitChildren(this);
8398 		}
8399 	}
8400 
8401 	public final CaseWhenContext caseWhen() throws RecognitionException {
8402 		CaseWhenContext _localctx = new CaseWhenContext(_ctx, getState());
8403 		enterRule(_localctx, 138, RULE_caseWhen);
8404 		try {
8405 			enterOuterAlt(_localctx, 1);
8406 			{
8407 			setState(1588);
8408 			match(WHEN);
8409 			setState(1589);
8410 			expr(0);
8411 			setState(1590);
8412 			match(THEN);
8413 			setState(1591);
8414 			expr(0);
8415 			}
8416 		}
8417 		catch (RecognitionException re) {
8418 			_localctx.exception = re;
8419 			_errHandler.reportError(this, re);
8420 			_errHandler.recover(this, re);
8421 		}
8422 		finally {
8423 			exitRule();
8424 		}
8425 		return _localctx;
8426 	}
8427 
8428 	public static class CaseElseContext extends ParserRuleContext {
8429 		public TerminalNode ELSE() { return getToken(SQLServerStatementParser.ELSE, 0); }
8430 		public ExprContext expr() {
8431 			return getRuleContext(ExprContext.class,0);
8432 		}
8433 		public CaseElseContext(ParserRuleContext parent, int invokingState) {
8434 			super(parent, invokingState);
8435 		}
8436 		@Override public int getRuleIndex() { return RULE_caseElse; }
8437 		@Override
8438 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8439 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseElse(this);
8440 			else return visitor.visitChildren(this);
8441 		}
8442 	}
8443 
8444 	public final CaseElseContext caseElse() throws RecognitionException {
8445 		CaseElseContext _localctx = new CaseElseContext(_ctx, getState());
8446 		enterRule(_localctx, 140, RULE_caseElse);
8447 		try {
8448 			enterOuterAlt(_localctx, 1);
8449 			{
8450 			setState(1593);
8451 			match(ELSE);
8452 			setState(1594);
8453 			expr(0);
8454 			}
8455 		}
8456 		catch (RecognitionException re) {
8457 			_localctx.exception = re;
8458 			_errHandler.reportError(this, re);
8459 			_errHandler.recover(this, re);
8460 		}
8461 		finally {
8462 			exitRule();
8463 		}
8464 		return _localctx;
8465 	}
8466 
8467 	public static class PrivateExprOfDbContext extends ParserRuleContext {
8468 		public WindowedFunctionContext windowedFunction() {
8469 			return getRuleContext(WindowedFunctionContext.class,0);
8470 		}
8471 		public AtTimeZoneExprContext atTimeZoneExpr() {
8472 			return getRuleContext(AtTimeZoneExprContext.class,0);
8473 		}
8474 		public CastExprContext castExpr() {
8475 			return getRuleContext(CastExprContext.class,0);
8476 		}
8477 		public ConvertExprContext convertExpr() {
8478 			return getRuleContext(ConvertExprContext.class,0);
8479 		}
8480 		public PrivateExprOfDbContext(ParserRuleContext parent, int invokingState) {
8481 			super(parent, invokingState);
8482 		}
8483 		@Override public int getRuleIndex() { return RULE_privateExprOfDb; }
8484 		@Override
8485 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8486 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrivateExprOfDb(this);
8487 			else return visitor.visitChildren(this);
8488 		}
8489 	}
8490 
8491 	public final PrivateExprOfDbContext privateExprOfDb() throws RecognitionException {
8492 		PrivateExprOfDbContext _localctx = new PrivateExprOfDbContext(_ctx, getState());
8493 		enterRule(_localctx, 142, RULE_privateExprOfDb);
8494 		try {
8495 			setState(1600);
8496 			_errHandler.sync(this);
8497 			switch ( getInterpreter().adaptivePredict(_input,76,_ctx) ) {
8498 			case 1:
8499 				enterOuterAlt(_localctx, 1);
8500 				{
8501 				setState(1596);
8502 				windowedFunction();
8503 				}
8504 				break;
8505 			case 2:
8506 				enterOuterAlt(_localctx, 2);
8507 				{
8508 				setState(1597);
8509 				atTimeZoneExpr();
8510 				}
8511 				break;
8512 			case 3:
8513 				enterOuterAlt(_localctx, 3);
8514 				{
8515 				setState(1598);
8516 				castExpr();
8517 				}
8518 				break;
8519 			case 4:
8520 				enterOuterAlt(_localctx, 4);
8521 				{
8522 				setState(1599);
8523 				convertExpr();
8524 				}
8525 				break;
8526 			}
8527 		}
8528 		catch (RecognitionException re) {
8529 			_localctx.exception = re;
8530 			_errHandler.reportError(this, re);
8531 			_errHandler.recover(this, re);
8532 		}
8533 		finally {
8534 			exitRule();
8535 		}
8536 		return _localctx;
8537 	}
8538 
8539 	public static class OrderByClauseContext extends ParserRuleContext {
8540 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
8541 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
8542 		public List<OrderByItemContext> orderByItem() {
8543 			return getRuleContexts(OrderByItemContext.class);
8544 		}
8545 		public OrderByItemContext orderByItem(int i) {
8546 			return getRuleContext(OrderByItemContext.class,i);
8547 		}
8548 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8549 		public TerminalNode COMMA_(int i) {
8550 			return getToken(SQLServerStatementParser.COMMA_, i);
8551 		}
8552 		public TerminalNode OFFSET() { return getToken(SQLServerStatementParser.OFFSET, 0); }
8553 		public List<ExprContext> expr() {
8554 			return getRuleContexts(ExprContext.class);
8555 		}
8556 		public ExprContext expr(int i) {
8557 			return getRuleContext(ExprContext.class,i);
8558 		}
8559 		public List<TerminalNode> ROW() { return getTokens(SQLServerStatementParser.ROW); }
8560 		public TerminalNode ROW(int i) {
8561 			return getToken(SQLServerStatementParser.ROW, i);
8562 		}
8563 		public List<TerminalNode> ROWS() { return getTokens(SQLServerStatementParser.ROWS); }
8564 		public TerminalNode ROWS(int i) {
8565 			return getToken(SQLServerStatementParser.ROWS, i);
8566 		}
8567 		public TerminalNode FETCH() { return getToken(SQLServerStatementParser.FETCH, 0); }
8568 		public TerminalNode ONLY() { return getToken(SQLServerStatementParser.ONLY, 0); }
8569 		public TerminalNode FIRST() { return getToken(SQLServerStatementParser.FIRST, 0); }
8570 		public TerminalNode NEXT() { return getToken(SQLServerStatementParser.NEXT, 0); }
8571 		public OrderByClauseContext(ParserRuleContext parent, int invokingState) {
8572 			super(parent, invokingState);
8573 		}
8574 		@Override public int getRuleIndex() { return RULE_orderByClause; }
8575 		@Override
8576 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8577 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrderByClause(this);
8578 			else return visitor.visitChildren(this);
8579 		}
8580 	}
8581 
8582 	public final OrderByClauseContext orderByClause() throws RecognitionException {
8583 		OrderByClauseContext _localctx = new OrderByClauseContext(_ctx, getState());
8584 		enterRule(_localctx, 144, RULE_orderByClause);
8585 		int _la;
8586 		try {
8587 			enterOuterAlt(_localctx, 1);
8588 			{
8589 			setState(1602);
8590 			match(ORDER);
8591 			setState(1603);
8592 			match(BY);
8593 			setState(1604);
8594 			orderByItem();
8595 			setState(1609);
8596 			_errHandler.sync(this);
8597 			_la = _input.LA(1);
8598 			while (_la==COMMA_) {
8599 				{
8600 				{
8601 				setState(1605);
8602 				match(COMMA_);
8603 				setState(1606);
8604 				orderByItem();
8605 				}
8606 				}
8607 				setState(1611);
8608 				_errHandler.sync(this);
8609 				_la = _input.LA(1);
8610 			}
8611 			setState(1623);
8612 			_errHandler.sync(this);
8613 			_la = _input.LA(1);
8614 			if (_la==OFFSET) {
8615 				{
8616 				setState(1612);
8617 				match(OFFSET);
8618 				setState(1613);
8619 				expr(0);
8620 				setState(1614);
8621 				_la = _input.LA(1);
8622 				if ( !(_la==ROW || _la==ROWS) ) {
8623 				_errHandler.recoverInline(this);
8624 				}
8625 				else {
8626 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8627 					_errHandler.reportMatch(this);
8628 					consume();
8629 				}
8630 				setState(1621);
8631 				_errHandler.sync(this);
8632 				_la = _input.LA(1);
8633 				if (_la==FETCH) {
8634 					{
8635 					setState(1615);
8636 					match(FETCH);
8637 					setState(1616);
8638 					_la = _input.LA(1);
8639 					if ( !(_la==NEXT || _la==FIRST) ) {
8640 					_errHandler.recoverInline(this);
8641 					}
8642 					else {
8643 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8644 						_errHandler.reportMatch(this);
8645 						consume();
8646 					}
8647 					setState(1617);
8648 					expr(0);
8649 					setState(1618);
8650 					_la = _input.LA(1);
8651 					if ( !(_la==ROW || _la==ROWS) ) {
8652 					_errHandler.recoverInline(this);
8653 					}
8654 					else {
8655 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8656 						_errHandler.reportMatch(this);
8657 						consume();
8658 					}
8659 					setState(1619);
8660 					match(ONLY);
8661 					}
8662 				}
8663 
8664 				}
8665 			}
8666 
8667 			}
8668 		}
8669 		catch (RecognitionException re) {
8670 			_localctx.exception = re;
8671 			_errHandler.reportError(this, re);
8672 			_errHandler.recover(this, re);
8673 		}
8674 		finally {
8675 			exitRule();
8676 		}
8677 		return _localctx;
8678 	}
8679 
8680 	public static class OrderByItemContext extends ParserRuleContext {
8681 		public ColumnNameContext columnName() {
8682 			return getRuleContext(ColumnNameContext.class,0);
8683 		}
8684 		public NumberLiteralsContext numberLiterals() {
8685 			return getRuleContext(NumberLiteralsContext.class,0);
8686 		}
8687 		public ExprContext expr() {
8688 			return getRuleContext(ExprContext.class,0);
8689 		}
8690 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
8691 		public IdentifierContext identifier() {
8692 			return getRuleContext(IdentifierContext.class,0);
8693 		}
8694 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
8695 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
8696 		public OrderByItemContext(ParserRuleContext parent, int invokingState) {
8697 			super(parent, invokingState);
8698 		}
8699 		@Override public int getRuleIndex() { return RULE_orderByItem; }
8700 		@Override
8701 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8702 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrderByItem(this);
8703 			else return visitor.visitChildren(this);
8704 		}
8705 	}
8706 
8707 	public final OrderByItemContext orderByItem() throws RecognitionException {
8708 		OrderByItemContext _localctx = new OrderByItemContext(_ctx, getState());
8709 		enterRule(_localctx, 146, RULE_orderByItem);
8710 		int _la;
8711 		try {
8712 			enterOuterAlt(_localctx, 1);
8713 			{
8714 			setState(1628);
8715 			_errHandler.sync(this);
8716 			switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) {
8717 			case 1:
8718 				{
8719 				setState(1625);
8720 				columnName();
8721 				}
8722 				break;
8723 			case 2:
8724 				{
8725 				setState(1626);
8726 				numberLiterals();
8727 				}
8728 				break;
8729 			case 3:
8730 				{
8731 				setState(1627);
8732 				expr(0);
8733 				}
8734 				break;
8735 			}
8736 			setState(1632);
8737 			_errHandler.sync(this);
8738 			_la = _input.LA(1);
8739 			if (_la==COLLATE) {
8740 				{
8741 				setState(1630);
8742 				match(COLLATE);
8743 				setState(1631);
8744 				identifier();
8745 				}
8746 			}
8747 
8748 			setState(1635);
8749 			_errHandler.sync(this);
8750 			_la = _input.LA(1);
8751 			if (_la==ASC || _la==DESC) {
8752 				{
8753 				setState(1634);
8754 				_la = _input.LA(1);
8755 				if ( !(_la==ASC || _la==DESC) ) {
8756 				_errHandler.recoverInline(this);
8757 				}
8758 				else {
8759 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8760 					_errHandler.reportMatch(this);
8761 					consume();
8762 				}
8763 				}
8764 			}
8765 
8766 			}
8767 		}
8768 		catch (RecognitionException re) {
8769 			_localctx.exception = re;
8770 			_errHandler.reportError(this, re);
8771 			_errHandler.recover(this, re);
8772 		}
8773 		finally {
8774 			exitRule();
8775 		}
8776 		return _localctx;
8777 	}
8778 
8779 	public static class DataTypeContext extends ParserRuleContext {
8780 		public DataTypeNameContext dataTypeName() {
8781 			return getRuleContext(DataTypeNameContext.class,0);
8782 		}
8783 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
8784 			return getRuleContexts(IgnoredIdentifierContext.class);
8785 		}
8786 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
8787 			return getRuleContext(IgnoredIdentifierContext.class,i);
8788 		}
8789 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
8790 		public DataTypeLengthContext dataTypeLength() {
8791 			return getRuleContext(DataTypeLengthContext.class,0);
8792 		}
8793 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8794 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
8795 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8796 		public TerminalNode CONTENT() { return getToken(SQLServerStatementParser.CONTENT, 0); }
8797 		public TerminalNode DOCUMENT() { return getToken(SQLServerStatementParser.DOCUMENT, 0); }
8798 		public DataTypeContext(ParserRuleContext parent, int invokingState) {
8799 			super(parent, invokingState);
8800 		}
8801 		@Override public int getRuleIndex() { return RULE_dataType; }
8802 		@Override
8803 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8804 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataType(this);
8805 			else return visitor.visitChildren(this);
8806 		}
8807 	}
8808 
8809 	public final DataTypeContext dataType() throws RecognitionException {
8810 		DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
8811 		enterRule(_localctx, 148, RULE_dataType);
8812 		int _la;
8813 		try {
8814 			enterOuterAlt(_localctx, 1);
8815 			{
8816 			setState(1640);
8817 			_errHandler.sync(this);
8818 			switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) {
8819 			case 1:
8820 				{
8821 				setState(1637);
8822 				ignoredIdentifier();
8823 				setState(1638);
8824 				match(DOT_);
8825 				}
8826 				break;
8827 			}
8828 			setState(1642);
8829 			dataTypeName();
8830 			setState(1654);
8831 			_errHandler.sync(this);
8832 			switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) {
8833 			case 1:
8834 				{
8835 				setState(1643);
8836 				dataTypeLength();
8837 				}
8838 				break;
8839 			case 2:
8840 				{
8841 				setState(1644);
8842 				match(LP_);
8843 				setState(1645);
8844 				match(MAX);
8845 				setState(1646);
8846 				match(RP_);
8847 				}
8848 				break;
8849 			case 3:
8850 				{
8851 				setState(1647);
8852 				match(LP_);
8853 				setState(1649);
8854 				_errHandler.sync(this);
8855 				_la = _input.LA(1);
8856 				if (_la==CONTENT || _la==DOCUMENT) {
8857 					{
8858 					setState(1648);
8859 					_la = _input.LA(1);
8860 					if ( !(_la==CONTENT || _la==DOCUMENT) ) {
8861 					_errHandler.recoverInline(this);
8862 					}
8863 					else {
8864 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8865 						_errHandler.reportMatch(this);
8866 						consume();
8867 					}
8868 					}
8869 				}
8870 
8871 				setState(1651);
8872 				ignoredIdentifier();
8873 				setState(1652);
8874 				match(RP_);
8875 				}
8876 				break;
8877 			}
8878 			}
8879 		}
8880 		catch (RecognitionException re) {
8881 			_localctx.exception = re;
8882 			_errHandler.reportError(this, re);
8883 			_errHandler.recover(this, re);
8884 		}
8885 		finally {
8886 			exitRule();
8887 		}
8888 		return _localctx;
8889 	}
8890 
8891 	public static class DataTypeNameContext extends ParserRuleContext {
8892 		public TerminalNode BIGINT() { return getToken(SQLServerStatementParser.BIGINT, 0); }
8893 		public TerminalNode NUMERIC() { return getToken(SQLServerStatementParser.NUMERIC, 0); }
8894 		public TerminalNode BIT() { return getToken(SQLServerStatementParser.BIT, 0); }
8895 		public TerminalNode SMALLINT() { return getToken(SQLServerStatementParser.SMALLINT, 0); }
8896 		public TerminalNode DECIMAL() { return getToken(SQLServerStatementParser.DECIMAL, 0); }
8897 		public TerminalNode SMALLMONEY() { return getToken(SQLServerStatementParser.SMALLMONEY, 0); }
8898 		public TerminalNode INT() { return getToken(SQLServerStatementParser.INT, 0); }
8899 		public TerminalNode TINYINT() { return getToken(SQLServerStatementParser.TINYINT, 0); }
8900 		public TerminalNode MONEY() { return getToken(SQLServerStatementParser.MONEY, 0); }
8901 		public TerminalNode FLOAT() { return getToken(SQLServerStatementParser.FLOAT, 0); }
8902 		public TerminalNode REAL() { return getToken(SQLServerStatementParser.REAL, 0); }
8903 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
8904 		public TerminalNode DATETIMEOFFSET() { return getToken(SQLServerStatementParser.DATETIMEOFFSET, 0); }
8905 		public TerminalNode SMALLDATETIME() { return getToken(SQLServerStatementParser.SMALLDATETIME, 0); }
8906 		public TerminalNode DATETIME() { return getToken(SQLServerStatementParser.DATETIME, 0); }
8907 		public TerminalNode DATETIME2() { return getToken(SQLServerStatementParser.DATETIME2, 0); }
8908 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
8909 		public TerminalNode CHAR() { return getToken(SQLServerStatementParser.CHAR, 0); }
8910 		public TerminalNode VARCHAR() { return getToken(SQLServerStatementParser.VARCHAR, 0); }
8911 		public TerminalNode TEXT() { return getToken(SQLServerStatementParser.TEXT, 0); }
8912 		public TerminalNode NCHAR() { return getToken(SQLServerStatementParser.NCHAR, 0); }
8913 		public TerminalNode NVARCHAR() { return getToken(SQLServerStatementParser.NVARCHAR, 0); }
8914 		public TerminalNode NTEXT() { return getToken(SQLServerStatementParser.NTEXT, 0); }
8915 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
8916 		public TerminalNode VARBINARY() { return getToken(SQLServerStatementParser.VARBINARY, 0); }
8917 		public TerminalNode IMAGE() { return getToken(SQLServerStatementParser.IMAGE, 0); }
8918 		public TerminalNode SQL_VARIANT() { return getToken(SQLServerStatementParser.SQL_VARIANT, 0); }
8919 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
8920 		public TerminalNode UNIQUEIDENTIFIER() { return getToken(SQLServerStatementParser.UNIQUEIDENTIFIER, 0); }
8921 		public TerminalNode HIERARCHYID() { return getToken(SQLServerStatementParser.HIERARCHYID, 0); }
8922 		public TerminalNode GEOMETRY() { return getToken(SQLServerStatementParser.GEOMETRY, 0); }
8923 		public TerminalNode GEOGRAPHY() { return getToken(SQLServerStatementParser.GEOGRAPHY, 0); }
8924 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
8925 		public TerminalNode INTEGER() { return getToken(SQLServerStatementParser.INTEGER, 0); }
8926 		public DataTypeNameContext(ParserRuleContext parent, int invokingState) {
8927 			super(parent, invokingState);
8928 		}
8929 		@Override public int getRuleIndex() { return RULE_dataTypeName; }
8930 		@Override
8931 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8932 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataTypeName(this);
8933 			else return visitor.visitChildren(this);
8934 		}
8935 	}
8936 
8937 	public final DataTypeNameContext dataTypeName() throws RecognitionException {
8938 		DataTypeNameContext _localctx = new DataTypeNameContext(_ctx, getState());
8939 		enterRule(_localctx, 150, RULE_dataTypeName);
8940 		int _la;
8941 		try {
8942 			enterOuterAlt(_localctx, 1);
8943 			{
8944 			setState(1656);
8945 			_la = _input.LA(1);
8946 			if ( !(((((_la - 129)) & ~0x3f) == 0 && ((1L << (_la - 129)) & ((1L << (CHAR - 129)) | (1L << (DATE - 129)) | (1L << (TIME - 129)) | (1L << (INTEGER - 129)) | (1L << (REAL - 129)) | (1L << (DECIMAL - 129)) | (1L << (BIT - 129)) | (1L << (SMALLINT - 129)) | (1L << (INT - 129)) | (1L << (TINYINT - 129)) | (1L << (NUMERIC - 129)) | (1L << (FLOAT - 129)) | (1L << (BIGINT - 129)) | (1L << (TEXT - 129)) | (1L << (VARCHAR - 129)))) != 0) || _la==BINARY || _la==XML || ((((_la - 423)) & ~0x3f) == 0 && ((1L << (_la - 423)) & ((1L << (MONEY - 423)) | (1L << (SMALLMONEY - 423)) | (1L << (DATETIMEOFFSET - 423)) | (1L << (DATETIME - 423)) | (1L << (DATETIME2 - 423)) | (1L << (SMALLDATETIME - 423)) | (1L << (NCHAR - 423)) | (1L << (NVARCHAR - 423)) | (1L << (NTEXT - 423)) | (1L << (VARBINARY - 423)) | (1L << (IMAGE - 423)) | (1L << (SQL_VARIANT - 423)) | (1L << (UNIQUEIDENTIFIER - 423)) | (1L << (HIERARCHYID - 423)) | (1L << (GEOMETRY - 423)) | (1L << (GEOGRAPHY - 423)))) != 0) || _la==IDENTIFIER_) ) {
8947 			_errHandler.recoverInline(this);
8948 			}
8949 			else {
8950 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8951 				_errHandler.reportMatch(this);
8952 				consume();
8953 			}
8954 			}
8955 		}
8956 		catch (RecognitionException re) {
8957 			_localctx.exception = re;
8958 			_errHandler.reportError(this, re);
8959 			_errHandler.recover(this, re);
8960 		}
8961 		finally {
8962 			exitRule();
8963 		}
8964 		return _localctx;
8965 	}
8966 
8967 	public static class AtTimeZoneExprContext extends ParserRuleContext {
8968 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
8969 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
8970 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
8971 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
8972 		public TerminalNode ZONE() { return getToken(SQLServerStatementParser.ZONE, 0); }
8973 		public AtTimeZoneExprContext(ParserRuleContext parent, int invokingState) {
8974 			super(parent, invokingState);
8975 		}
8976 		@Override public int getRuleIndex() { return RULE_atTimeZoneExpr; }
8977 		@Override
8978 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8979 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAtTimeZoneExpr(this);
8980 			else return visitor.visitChildren(this);
8981 		}
8982 	}
8983 
8984 	public final AtTimeZoneExprContext atTimeZoneExpr() throws RecognitionException {
8985 		AtTimeZoneExprContext _localctx = new AtTimeZoneExprContext(_ctx, getState());
8986 		enterRule(_localctx, 152, RULE_atTimeZoneExpr);
8987 		int _la;
8988 		try {
8989 			enterOuterAlt(_localctx, 1);
8990 			{
8991 			setState(1658);
8992 			match(IDENTIFIER_);
8993 			setState(1662);
8994 			_errHandler.sync(this);
8995 			_la = _input.LA(1);
8996 			if (_la==WITH) {
8997 				{
8998 				setState(1659);
8999 				match(WITH);
9000 				setState(1660);
9001 				match(TIME);
9002 				setState(1661);
9003 				match(ZONE);
9004 				}
9005 			}
9006 
9007 			setState(1664);
9008 			match(STRING_);
9009 			}
9010 		}
9011 		catch (RecognitionException re) {
9012 			_localctx.exception = re;
9013 			_errHandler.reportError(this, re);
9014 			_errHandler.recover(this, re);
9015 		}
9016 		finally {
9017 			exitRule();
9018 		}
9019 		return _localctx;
9020 	}
9021 
9022 	public static class CastExprContext extends ParserRuleContext {
9023 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
9024 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
9025 		public TerminalNode LP_(int i) {
9026 			return getToken(SQLServerStatementParser.LP_, i);
9027 		}
9028 		public ExprContext expr() {
9029 			return getRuleContext(ExprContext.class,0);
9030 		}
9031 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
9032 		public DataTypeContext dataType() {
9033 			return getRuleContext(DataTypeContext.class,0);
9034 		}
9035 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
9036 		public TerminalNode RP_(int i) {
9037 			return getToken(SQLServerStatementParser.RP_, i);
9038 		}
9039 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
9040 		public CastExprContext(ParserRuleContext parent, int invokingState) {
9041 			super(parent, invokingState);
9042 		}
9043 		@Override public int getRuleIndex() { return RULE_castExpr; }
9044 		@Override
9045 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9046 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCastExpr(this);
9047 			else return visitor.visitChildren(this);
9048 		}
9049 	}
9050 
9051 	public final CastExprContext castExpr() throws RecognitionException {
9052 		CastExprContext _localctx = new CastExprContext(_ctx, getState());
9053 		enterRule(_localctx, 154, RULE_castExpr);
9054 		int _la;
9055 		try {
9056 			enterOuterAlt(_localctx, 1);
9057 			{
9058 			setState(1666);
9059 			match(CAST);
9060 			setState(1667);
9061 			match(LP_);
9062 			setState(1668);
9063 			expr(0);
9064 			setState(1669);
9065 			match(AS);
9066 			setState(1670);
9067 			dataType();
9068 			setState(1674);
9069 			_errHandler.sync(this);
9070 			_la = _input.LA(1);
9071 			if (_la==LP_) {
9072 				{
9073 				setState(1671);
9074 				match(LP_);
9075 				setState(1672);
9076 				match(NUMBER_);
9077 				setState(1673);
9078 				match(RP_);
9079 				}
9080 			}
9081 
9082 			setState(1676);
9083 			match(RP_);
9084 			}
9085 		}
9086 		catch (RecognitionException re) {
9087 			_localctx.exception = re;
9088 			_errHandler.reportError(this, re);
9089 			_errHandler.recover(this, re);
9090 		}
9091 		finally {
9092 			exitRule();
9093 		}
9094 		return _localctx;
9095 	}
9096 
9097 	public static class ConvertExprContext extends ParserRuleContext {
9098 		public TerminalNode CONVERT() { return getToken(SQLServerStatementParser.CONVERT, 0); }
9099 		public DataTypeContext dataType() {
9100 			return getRuleContext(DataTypeContext.class,0);
9101 		}
9102 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
9103 		public TerminalNode COMMA_(int i) {
9104 			return getToken(SQLServerStatementParser.COMMA_, i);
9105 		}
9106 		public ExprContext expr() {
9107 			return getRuleContext(ExprContext.class,0);
9108 		}
9109 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
9110 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
9111 		public TerminalNode NUMBER_(int i) {
9112 			return getToken(SQLServerStatementParser.NUMBER_, i);
9113 		}
9114 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
9115 		public ConvertExprContext(ParserRuleContext parent, int invokingState) {
9116 			super(parent, invokingState);
9117 		}
9118 		@Override public int getRuleIndex() { return RULE_convertExpr; }
9119 		@Override
9120 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9121 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConvertExpr(this);
9122 			else return visitor.visitChildren(this);
9123 		}
9124 	}
9125 
9126 	public final ConvertExprContext convertExpr() throws RecognitionException {
9127 		ConvertExprContext _localctx = new ConvertExprContext(_ctx, getState());
9128 		enterRule(_localctx, 156, RULE_convertExpr);
9129 		int _la;
9130 		try {
9131 			enterOuterAlt(_localctx, 1);
9132 			{
9133 			setState(1678);
9134 			match(CONVERT);
9135 			{
9136 			setState(1679);
9137 			dataType();
9138 			setState(1683);
9139 			_errHandler.sync(this);
9140 			_la = _input.LA(1);
9141 			if (_la==LP_) {
9142 				{
9143 				setState(1680);
9144 				match(LP_);
9145 				setState(1681);
9146 				match(NUMBER_);
9147 				setState(1682);
9148 				match(RP_);
9149 				}
9150 			}
9151 
9152 			setState(1685);
9153 			match(COMMA_);
9154 			setState(1686);
9155 			expr(0);
9156 			setState(1689);
9157 			_errHandler.sync(this);
9158 			switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) {
9159 			case 1:
9160 				{
9161 				setState(1687);
9162 				match(COMMA_);
9163 				setState(1688);
9164 				match(NUMBER_);
9165 				}
9166 				break;
9167 			}
9168 			}
9169 			}
9170 		}
9171 		catch (RecognitionException re) {
9172 			_localctx.exception = re;
9173 			_errHandler.reportError(this, re);
9174 			_errHandler.recover(this, re);
9175 		}
9176 		finally {
9177 			exitRule();
9178 		}
9179 		return _localctx;
9180 	}
9181 
9182 	public static class WindowedFunctionContext extends ParserRuleContext {
9183 		public FunctionCallContext functionCall() {
9184 			return getRuleContext(FunctionCallContext.class,0);
9185 		}
9186 		public OverClauseContext overClause() {
9187 			return getRuleContext(OverClauseContext.class,0);
9188 		}
9189 		public WindowedFunctionContext(ParserRuleContext parent, int invokingState) {
9190 			super(parent, invokingState);
9191 		}
9192 		@Override public int getRuleIndex() { return RULE_windowedFunction; }
9193 		@Override
9194 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9195 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowedFunction(this);
9196 			else return visitor.visitChildren(this);
9197 		}
9198 	}
9199 
9200 	public final WindowedFunctionContext windowedFunction() throws RecognitionException {
9201 		WindowedFunctionContext _localctx = new WindowedFunctionContext(_ctx, getState());
9202 		enterRule(_localctx, 158, RULE_windowedFunction);
9203 		try {
9204 			enterOuterAlt(_localctx, 1);
9205 			{
9206 			setState(1691);
9207 			functionCall();
9208 			setState(1692);
9209 			overClause();
9210 			}
9211 		}
9212 		catch (RecognitionException re) {
9213 			_localctx.exception = re;
9214 			_errHandler.reportError(this, re);
9215 			_errHandler.recover(this, re);
9216 		}
9217 		finally {
9218 			exitRule();
9219 		}
9220 		return _localctx;
9221 	}
9222 
9223 	public static class OverClauseContext extends ParserRuleContext {
9224 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
9225 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
9226 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
9227 		public PartitionByClauseContext partitionByClause() {
9228 			return getRuleContext(PartitionByClauseContext.class,0);
9229 		}
9230 		public OrderByClauseContext orderByClause() {
9231 			return getRuleContext(OrderByClauseContext.class,0);
9232 		}
9233 		public RowRangeClauseContext rowRangeClause() {
9234 			return getRuleContext(RowRangeClauseContext.class,0);
9235 		}
9236 		public OverClauseContext(ParserRuleContext parent, int invokingState) {
9237 			super(parent, invokingState);
9238 		}
9239 		@Override public int getRuleIndex() { return RULE_overClause; }
9240 		@Override
9241 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9242 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOverClause(this);
9243 			else return visitor.visitChildren(this);
9244 		}
9245 	}
9246 
9247 	public final OverClauseContext overClause() throws RecognitionException {
9248 		OverClauseContext _localctx = new OverClauseContext(_ctx, getState());
9249 		enterRule(_localctx, 160, RULE_overClause);
9250 		int _la;
9251 		try {
9252 			enterOuterAlt(_localctx, 1);
9253 			{
9254 			setState(1694);
9255 			match(OVER);
9256 			setState(1695);
9257 			match(LP_);
9258 			setState(1697);
9259 			_errHandler.sync(this);
9260 			_la = _input.LA(1);
9261 			if (_la==PARTITION) {
9262 				{
9263 				setState(1696);
9264 				partitionByClause();
9265 				}
9266 			}
9267 
9268 			setState(1700);
9269 			_errHandler.sync(this);
9270 			_la = _input.LA(1);
9271 			if (_la==ORDER) {
9272 				{
9273 				setState(1699);
9274 				orderByClause();
9275 				}
9276 			}
9277 
9278 			setState(1703);
9279 			_errHandler.sync(this);
9280 			_la = _input.LA(1);
9281 			if (_la==ROWS || _la==RANGE) {
9282 				{
9283 				setState(1702);
9284 				rowRangeClause();
9285 				}
9286 			}
9287 
9288 			setState(1705);
9289 			match(RP_);
9290 			}
9291 		}
9292 		catch (RecognitionException re) {
9293 			_localctx.exception = re;
9294 			_errHandler.reportError(this, re);
9295 			_errHandler.recover(this, re);
9296 		}
9297 		finally {
9298 			exitRule();
9299 		}
9300 		return _localctx;
9301 	}
9302 
9303 	public static class PartitionByClauseContext extends ParserRuleContext {
9304 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
9305 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
9306 		public List<ExprContext> expr() {
9307 			return getRuleContexts(ExprContext.class);
9308 		}
9309 		public ExprContext expr(int i) {
9310 			return getRuleContext(ExprContext.class,i);
9311 		}
9312 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
9313 		public TerminalNode COMMA_(int i) {
9314 			return getToken(SQLServerStatementParser.COMMA_, i);
9315 		}
9316 		public PartitionByClauseContext(ParserRuleContext parent, int invokingState) {
9317 			super(parent, invokingState);
9318 		}
9319 		@Override public int getRuleIndex() { return RULE_partitionByClause; }
9320 		@Override
9321 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9322 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionByClause(this);
9323 			else return visitor.visitChildren(this);
9324 		}
9325 	}
9326 
9327 	public final PartitionByClauseContext partitionByClause() throws RecognitionException {
9328 		PartitionByClauseContext _localctx = new PartitionByClauseContext(_ctx, getState());
9329 		enterRule(_localctx, 162, RULE_partitionByClause);
9330 		int _la;
9331 		try {
9332 			enterOuterAlt(_localctx, 1);
9333 			{
9334 			setState(1707);
9335 			match(PARTITION);
9336 			setState(1708);
9337 			match(BY);
9338 			setState(1709);
9339 			expr(0);
9340 			setState(1714);
9341 			_errHandler.sync(this);
9342 			_la = _input.LA(1);
9343 			while (_la==COMMA_) {
9344 				{
9345 				{
9346 				setState(1710);
9347 				match(COMMA_);
9348 				setState(1711);
9349 				expr(0);
9350 				}
9351 				}
9352 				setState(1716);
9353 				_errHandler.sync(this);
9354 				_la = _input.LA(1);
9355 			}
9356 			}
9357 		}
9358 		catch (RecognitionException re) {
9359 			_localctx.exception = re;
9360 			_errHandler.reportError(this, re);
9361 			_errHandler.recover(this, re);
9362 		}
9363 		finally {
9364 			exitRule();
9365 		}
9366 		return _localctx;
9367 	}
9368 
9369 	public static class RowRangeClauseContext extends ParserRuleContext {
9370 		public WindowFrameExtentContext windowFrameExtent() {
9371 			return getRuleContext(WindowFrameExtentContext.class,0);
9372 		}
9373 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
9374 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
9375 		public RowRangeClauseContext(ParserRuleContext parent, int invokingState) {
9376 			super(parent, invokingState);
9377 		}
9378 		@Override public int getRuleIndex() { return RULE_rowRangeClause; }
9379 		@Override
9380 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9381 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRowRangeClause(this);
9382 			else return visitor.visitChildren(this);
9383 		}
9384 	}
9385 
9386 	public final RowRangeClauseContext rowRangeClause() throws RecognitionException {
9387 		RowRangeClauseContext _localctx = new RowRangeClauseContext(_ctx, getState());
9388 		enterRule(_localctx, 164, RULE_rowRangeClause);
9389 		int _la;
9390 		try {
9391 			enterOuterAlt(_localctx, 1);
9392 			{
9393 			setState(1717);
9394 			_la = _input.LA(1);
9395 			if ( !(_la==ROWS || _la==RANGE) ) {
9396 			_errHandler.recoverInline(this);
9397 			}
9398 			else {
9399 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9400 				_errHandler.reportMatch(this);
9401 				consume();
9402 			}
9403 			setState(1718);
9404 			windowFrameExtent();
9405 			}
9406 		}
9407 		catch (RecognitionException re) {
9408 			_localctx.exception = re;
9409 			_errHandler.reportError(this, re);
9410 			_errHandler.recover(this, re);
9411 		}
9412 		finally {
9413 			exitRule();
9414 		}
9415 		return _localctx;
9416 	}
9417 
9418 	public static class WindowFrameExtentContext extends ParserRuleContext {
9419 		public WindowFramePrecedingContext windowFramePreceding() {
9420 			return getRuleContext(WindowFramePrecedingContext.class,0);
9421 		}
9422 		public WindowFrameBetweenContext windowFrameBetween() {
9423 			return getRuleContext(WindowFrameBetweenContext.class,0);
9424 		}
9425 		public WindowFrameExtentContext(ParserRuleContext parent, int invokingState) {
9426 			super(parent, invokingState);
9427 		}
9428 		@Override public int getRuleIndex() { return RULE_windowFrameExtent; }
9429 		@Override
9430 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9431 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameExtent(this);
9432 			else return visitor.visitChildren(this);
9433 		}
9434 	}
9435 
9436 	public final WindowFrameExtentContext windowFrameExtent() throws RecognitionException {
9437 		WindowFrameExtentContext _localctx = new WindowFrameExtentContext(_ctx, getState());
9438 		enterRule(_localctx, 166, RULE_windowFrameExtent);
9439 		try {
9440 			setState(1722);
9441 			_errHandler.sync(this);
9442 			switch (_input.LA(1)) {
9443 			case CURRENT:
9444 			case UNBOUNDED:
9445 			case NUMBER_:
9446 				enterOuterAlt(_localctx, 1);
9447 				{
9448 				setState(1720);
9449 				windowFramePreceding();
9450 				}
9451 				break;
9452 			case BETWEEN:
9453 				enterOuterAlt(_localctx, 2);
9454 				{
9455 				setState(1721);
9456 				windowFrameBetween();
9457 				}
9458 				break;
9459 			default:
9460 				throw new NoViableAltException(this);
9461 			}
9462 		}
9463 		catch (RecognitionException re) {
9464 			_localctx.exception = re;
9465 			_errHandler.reportError(this, re);
9466 			_errHandler.recover(this, re);
9467 		}
9468 		finally {
9469 			exitRule();
9470 		}
9471 		return _localctx;
9472 	}
9473 
9474 	public static class WindowFrameBetweenContext extends ParserRuleContext {
9475 		public TerminalNode BETWEEN() { return getToken(SQLServerStatementParser.BETWEEN, 0); }
9476 		public List<WindowFrameBoundContext> windowFrameBound() {
9477 			return getRuleContexts(WindowFrameBoundContext.class);
9478 		}
9479 		public WindowFrameBoundContext windowFrameBound(int i) {
9480 			return getRuleContext(WindowFrameBoundContext.class,i);
9481 		}
9482 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
9483 		public WindowFrameBetweenContext(ParserRuleContext parent, int invokingState) {
9484 			super(parent, invokingState);
9485 		}
9486 		@Override public int getRuleIndex() { return RULE_windowFrameBetween; }
9487 		@Override
9488 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9489 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameBetween(this);
9490 			else return visitor.visitChildren(this);
9491 		}
9492 	}
9493 
9494 	public final WindowFrameBetweenContext windowFrameBetween() throws RecognitionException {
9495 		WindowFrameBetweenContext _localctx = new WindowFrameBetweenContext(_ctx, getState());
9496 		enterRule(_localctx, 168, RULE_windowFrameBetween);
9497 		try {
9498 			enterOuterAlt(_localctx, 1);
9499 			{
9500 			setState(1724);
9501 			match(BETWEEN);
9502 			setState(1725);
9503 			windowFrameBound();
9504 			setState(1726);
9505 			match(AND);
9506 			setState(1727);
9507 			windowFrameBound();
9508 			}
9509 		}
9510 		catch (RecognitionException re) {
9511 			_localctx.exception = re;
9512 			_errHandler.reportError(this, re);
9513 			_errHandler.recover(this, re);
9514 		}
9515 		finally {
9516 			exitRule();
9517 		}
9518 		return _localctx;
9519 	}
9520 
9521 	public static class WindowFrameBoundContext extends ParserRuleContext {
9522 		public WindowFramePrecedingContext windowFramePreceding() {
9523 			return getRuleContext(WindowFramePrecedingContext.class,0);
9524 		}
9525 		public WindowFrameFollowingContext windowFrameFollowing() {
9526 			return getRuleContext(WindowFrameFollowingContext.class,0);
9527 		}
9528 		public WindowFrameBoundContext(ParserRuleContext parent, int invokingState) {
9529 			super(parent, invokingState);
9530 		}
9531 		@Override public int getRuleIndex() { return RULE_windowFrameBound; }
9532 		@Override
9533 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9534 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameBound(this);
9535 			else return visitor.visitChildren(this);
9536 		}
9537 	}
9538 
9539 	public final WindowFrameBoundContext windowFrameBound() throws RecognitionException {
9540 		WindowFrameBoundContext _localctx = new WindowFrameBoundContext(_ctx, getState());
9541 		enterRule(_localctx, 170, RULE_windowFrameBound);
9542 		try {
9543 			setState(1731);
9544 			_errHandler.sync(this);
9545 			switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) {
9546 			case 1:
9547 				enterOuterAlt(_localctx, 1);
9548 				{
9549 				setState(1729);
9550 				windowFramePreceding();
9551 				}
9552 				break;
9553 			case 2:
9554 				enterOuterAlt(_localctx, 2);
9555 				{
9556 				setState(1730);
9557 				windowFrameFollowing();
9558 				}
9559 				break;
9560 			}
9561 		}
9562 		catch (RecognitionException re) {
9563 			_localctx.exception = re;
9564 			_errHandler.reportError(this, re);
9565 			_errHandler.recover(this, re);
9566 		}
9567 		finally {
9568 			exitRule();
9569 		}
9570 		return _localctx;
9571 	}
9572 
9573 	public static class WindowFramePrecedingContext extends ParserRuleContext {
9574 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
9575 		public TerminalNode PRECEDING() { return getToken(SQLServerStatementParser.PRECEDING, 0); }
9576 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
9577 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
9578 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
9579 		public WindowFramePrecedingContext(ParserRuleContext parent, int invokingState) {
9580 			super(parent, invokingState);
9581 		}
9582 		@Override public int getRuleIndex() { return RULE_windowFramePreceding; }
9583 		@Override
9584 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9585 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFramePreceding(this);
9586 			else return visitor.visitChildren(this);
9587 		}
9588 	}
9589 
9590 	public final WindowFramePrecedingContext windowFramePreceding() throws RecognitionException {
9591 		WindowFramePrecedingContext _localctx = new WindowFramePrecedingContext(_ctx, getState());
9592 		enterRule(_localctx, 172, RULE_windowFramePreceding);
9593 		try {
9594 			setState(1739);
9595 			_errHandler.sync(this);
9596 			switch (_input.LA(1)) {
9597 			case UNBOUNDED:
9598 				enterOuterAlt(_localctx, 1);
9599 				{
9600 				setState(1733);
9601 				match(UNBOUNDED);
9602 				setState(1734);
9603 				match(PRECEDING);
9604 				}
9605 				break;
9606 			case NUMBER_:
9607 				enterOuterAlt(_localctx, 2);
9608 				{
9609 				setState(1735);
9610 				match(NUMBER_);
9611 				setState(1736);
9612 				match(PRECEDING);
9613 				}
9614 				break;
9615 			case CURRENT:
9616 				enterOuterAlt(_localctx, 3);
9617 				{
9618 				setState(1737);
9619 				match(CURRENT);
9620 				setState(1738);
9621 				match(ROW);
9622 				}
9623 				break;
9624 			default:
9625 				throw new NoViableAltException(this);
9626 			}
9627 		}
9628 		catch (RecognitionException re) {
9629 			_localctx.exception = re;
9630 			_errHandler.reportError(this, re);
9631 			_errHandler.recover(this, re);
9632 		}
9633 		finally {
9634 			exitRule();
9635 		}
9636 		return _localctx;
9637 	}
9638 
9639 	public static class WindowFrameFollowingContext extends ParserRuleContext {
9640 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
9641 		public TerminalNode FOLLOWING() { return getToken(SQLServerStatementParser.FOLLOWING, 0); }
9642 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
9643 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
9644 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
9645 		public WindowFrameFollowingContext(ParserRuleContext parent, int invokingState) {
9646 			super(parent, invokingState);
9647 		}
9648 		@Override public int getRuleIndex() { return RULE_windowFrameFollowing; }
9649 		@Override
9650 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9651 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameFollowing(this);
9652 			else return visitor.visitChildren(this);
9653 		}
9654 	}
9655 
9656 	public final WindowFrameFollowingContext windowFrameFollowing() throws RecognitionException {
9657 		WindowFrameFollowingContext _localctx = new WindowFrameFollowingContext(_ctx, getState());
9658 		enterRule(_localctx, 174, RULE_windowFrameFollowing);
9659 		try {
9660 			setState(1747);
9661 			_errHandler.sync(this);
9662 			switch (_input.LA(1)) {
9663 			case UNBOUNDED:
9664 				enterOuterAlt(_localctx, 1);
9665 				{
9666 				setState(1741);
9667 				match(UNBOUNDED);
9668 				setState(1742);
9669 				match(FOLLOWING);
9670 				}
9671 				break;
9672 			case NUMBER_:
9673 				enterOuterAlt(_localctx, 2);
9674 				{
9675 				setState(1743);
9676 				match(NUMBER_);
9677 				setState(1744);
9678 				match(FOLLOWING);
9679 				}
9680 				break;
9681 			case CURRENT:
9682 				enterOuterAlt(_localctx, 3);
9683 				{
9684 				setState(1745);
9685 				match(CURRENT);
9686 				setState(1746);
9687 				match(ROW);
9688 				}
9689 				break;
9690 			default:
9691 				throw new NoViableAltException(this);
9692 			}
9693 		}
9694 		catch (RecognitionException re) {
9695 			_localctx.exception = re;
9696 			_errHandler.reportError(this, re);
9697 			_errHandler.recover(this, re);
9698 		}
9699 		finally {
9700 			exitRule();
9701 		}
9702 		return _localctx;
9703 	}
9704 
9705 	public static class ColumnNameWithSortContext extends ParserRuleContext {
9706 		public ColumnNameContext columnName() {
9707 			return getRuleContext(ColumnNameContext.class,0);
9708 		}
9709 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
9710 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
9711 		public ColumnNameWithSortContext(ParserRuleContext parent, int invokingState) {
9712 			super(parent, invokingState);
9713 		}
9714 		@Override public int getRuleIndex() { return RULE_columnNameWithSort; }
9715 		@Override
9716 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9717 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNameWithSort(this);
9718 			else return visitor.visitChildren(this);
9719 		}
9720 	}
9721 
9722 	public final ColumnNameWithSortContext columnNameWithSort() throws RecognitionException {
9723 		ColumnNameWithSortContext _localctx = new ColumnNameWithSortContext(_ctx, getState());
9724 		enterRule(_localctx, 176, RULE_columnNameWithSort);
9725 		int _la;
9726 		try {
9727 			enterOuterAlt(_localctx, 1);
9728 			{
9729 			setState(1749);
9730 			columnName();
9731 			setState(1751);
9732 			_errHandler.sync(this);
9733 			_la = _input.LA(1);
9734 			if (_la==ASC || _la==DESC) {
9735 				{
9736 				setState(1750);
9737 				_la = _input.LA(1);
9738 				if ( !(_la==ASC || _la==DESC) ) {
9739 				_errHandler.recoverInline(this);
9740 				}
9741 				else {
9742 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9743 					_errHandler.reportMatch(this);
9744 					consume();
9745 				}
9746 				}
9747 			}
9748 
9749 			}
9750 		}
9751 		catch (RecognitionException re) {
9752 			_localctx.exception = re;
9753 			_errHandler.reportError(this, re);
9754 			_errHandler.recover(this, re);
9755 		}
9756 		finally {
9757 			exitRule();
9758 		}
9759 		return _localctx;
9760 	}
9761 
9762 	public static class IndexOptionContext extends ParserRuleContext {
9763 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
9764 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
9765 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
9766 		public EqOnOffOptionContext eqOnOffOption() {
9767 			return getRuleContext(EqOnOffOptionContext.class,0);
9768 		}
9769 		public EqTimeContext eqTime() {
9770 			return getRuleContext(EqTimeContext.class,0);
9771 		}
9772 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
9773 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
9774 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
9775 		public CompressionOptionContext compressionOption() {
9776 			return getRuleContext(CompressionOptionContext.class,0);
9777 		}
9778 		public OnPartitionClauseContext onPartitionClause() {
9779 			return getRuleContext(OnPartitionClauseContext.class,0);
9780 		}
9781 		public IndexOptionContext(ParserRuleContext parent, int invokingState) {
9782 			super(parent, invokingState);
9783 		}
9784 		@Override public int getRuleIndex() { return RULE_indexOption; }
9785 		@Override
9786 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9787 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOption(this);
9788 			else return visitor.visitChildren(this);
9789 		}
9790 	}
9791 
9792 	public final IndexOptionContext indexOption() throws RecognitionException {
9793 		IndexOptionContext _localctx = new IndexOptionContext(_ctx, getState());
9794 		enterRule(_localctx, 178, RULE_indexOption);
9795 		int _la;
9796 		try {
9797 			setState(1766);
9798 			_errHandler.sync(this);
9799 			switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) {
9800 			case 1:
9801 				enterOuterAlt(_localctx, 1);
9802 				{
9803 				setState(1753);
9804 				match(FILLFACTOR);
9805 				setState(1754);
9806 				match(EQ_);
9807 				setState(1755);
9808 				match(NUMBER_);
9809 				}
9810 				break;
9811 			case 2:
9812 				enterOuterAlt(_localctx, 2);
9813 				{
9814 				setState(1756);
9815 				eqOnOffOption();
9816 				}
9817 				break;
9818 			case 3:
9819 				enterOuterAlt(_localctx, 3);
9820 				{
9821 				setState(1757);
9822 				_la = _input.LA(1);
9823 				if ( !(_la==COMPRESSION_DELAY || _la==MAX_DURATION) ) {
9824 				_errHandler.recoverInline(this);
9825 				}
9826 				else {
9827 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9828 					_errHandler.reportMatch(this);
9829 					consume();
9830 				}
9831 				setState(1758);
9832 				eqTime();
9833 				}
9834 				break;
9835 			case 4:
9836 				enterOuterAlt(_localctx, 4);
9837 				{
9838 				setState(1759);
9839 				match(MAXDOP);
9840 				setState(1760);
9841 				match(EQ_);
9842 				setState(1761);
9843 				match(NUMBER_);
9844 				}
9845 				break;
9846 			case 5:
9847 				enterOuterAlt(_localctx, 5);
9848 				{
9849 				setState(1762);
9850 				compressionOption();
9851 				setState(1764);
9852 				_errHandler.sync(this);
9853 				_la = _input.LA(1);
9854 				if (_la==ON) {
9855 					{
9856 					setState(1763);
9857 					onPartitionClause();
9858 					}
9859 				}
9860 
9861 				}
9862 				break;
9863 			}
9864 		}
9865 		catch (RecognitionException re) {
9866 			_localctx.exception = re;
9867 			_errHandler.reportError(this, re);
9868 			_errHandler.recover(this, re);
9869 		}
9870 		finally {
9871 			exitRule();
9872 		}
9873 		return _localctx;
9874 	}
9875 
9876 	public static class CompressionOptionContext extends ParserRuleContext {
9877 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
9878 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
9879 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
9880 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
9881 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
9882 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
9883 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
9884 		public CompressionOptionContext(ParserRuleContext parent, int invokingState) {
9885 			super(parent, invokingState);
9886 		}
9887 		@Override public int getRuleIndex() { return RULE_compressionOption; }
9888 		@Override
9889 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9890 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompressionOption(this);
9891 			else return visitor.visitChildren(this);
9892 		}
9893 	}
9894 
9895 	public final CompressionOptionContext compressionOption() throws RecognitionException {
9896 		CompressionOptionContext _localctx = new CompressionOptionContext(_ctx, getState());
9897 		enterRule(_localctx, 180, RULE_compressionOption);
9898 		int _la;
9899 		try {
9900 			enterOuterAlt(_localctx, 1);
9901 			{
9902 			setState(1768);
9903 			match(DATA_COMPRESSION);
9904 			setState(1769);
9905 			match(EQ_);
9906 			setState(1770);
9907 			_la = _input.LA(1);
9908 			if ( !(((((_la - 221)) & ~0x3f) == 0 && ((1L << (_la - 221)) & ((1L << (ROW - 221)) | (1L << (COLUMNSTORE - 221)) | (1L << (NONE - 221)) | (1L << (PAGE - 221)))) != 0) || _la==COLUMNSTORE_ARCHIVE) ) {
9909 			_errHandler.recoverInline(this);
9910 			}
9911 			else {
9912 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
9913 				_errHandler.reportMatch(this);
9914 				consume();
9915 			}
9916 			}
9917 		}
9918 		catch (RecognitionException re) {
9919 			_localctx.exception = re;
9920 			_errHandler.reportError(this, re);
9921 			_errHandler.recover(this, re);
9922 		}
9923 		finally {
9924 			exitRule();
9925 		}
9926 		return _localctx;
9927 	}
9928 
9929 	public static class EqTimeContext extends ParserRuleContext {
9930 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
9931 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
9932 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
9933 		public EqTimeContext(ParserRuleContext parent, int invokingState) {
9934 			super(parent, invokingState);
9935 		}
9936 		@Override public int getRuleIndex() { return RULE_eqTime; }
9937 		@Override
9938 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9939 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqTime(this);
9940 			else return visitor.visitChildren(this);
9941 		}
9942 	}
9943 
9944 	public final EqTimeContext eqTime() throws RecognitionException {
9945 		EqTimeContext _localctx = new EqTimeContext(_ctx, getState());
9946 		enterRule(_localctx, 182, RULE_eqTime);
9947 		int _la;
9948 		try {
9949 			enterOuterAlt(_localctx, 1);
9950 			{
9951 			setState(1772);
9952 			match(EQ_);
9953 			setState(1773);
9954 			match(NUMBER_);
9955 			setState(1775);
9956 			_errHandler.sync(this);
9957 			_la = _input.LA(1);
9958 			if (_la==MINUTES) {
9959 				{
9960 				setState(1774);
9961 				match(MINUTES);
9962 				}
9963 			}
9964 
9965 			}
9966 		}
9967 		catch (RecognitionException re) {
9968 			_localctx.exception = re;
9969 			_errHandler.reportError(this, re);
9970 			_errHandler.recover(this, re);
9971 		}
9972 		finally {
9973 			exitRule();
9974 		}
9975 		return _localctx;
9976 	}
9977 
9978 	public static class EqOnOffOptionContext extends ParserRuleContext {
9979 		public EqKeyContext eqKey() {
9980 			return getRuleContext(EqKeyContext.class,0);
9981 		}
9982 		public EqOnOffContext eqOnOff() {
9983 			return getRuleContext(EqOnOffContext.class,0);
9984 		}
9985 		public EqOnOffOptionContext(ParserRuleContext parent, int invokingState) {
9986 			super(parent, invokingState);
9987 		}
9988 		@Override public int getRuleIndex() { return RULE_eqOnOffOption; }
9989 		@Override
9990 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9991 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqOnOffOption(this);
9992 			else return visitor.visitChildren(this);
9993 		}
9994 	}
9995 
9996 	public final EqOnOffOptionContext eqOnOffOption() throws RecognitionException {
9997 		EqOnOffOptionContext _localctx = new EqOnOffOptionContext(_ctx, getState());
9998 		enterRule(_localctx, 184, RULE_eqOnOffOption);
9999 		try {
10000 			enterOuterAlt(_localctx, 1);
10001 			{
10002 			setState(1777);
10003 			eqKey();
10004 			setState(1778);
10005 			eqOnOff();
10006 			}
10007 		}
10008 		catch (RecognitionException re) {
10009 			_localctx.exception = re;
10010 			_errHandler.reportError(this, re);
10011 			_errHandler.recover(this, re);
10012 		}
10013 		finally {
10014 			exitRule();
10015 		}
10016 		return _localctx;
10017 	}
10018 
10019 	public static class EqKeyContext extends ParserRuleContext {
10020 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
10021 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
10022 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
10023 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
10024 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
10025 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
10026 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
10027 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
10028 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
10029 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
10030 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
10031 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
10032 		public EqKeyContext(ParserRuleContext parent, int invokingState) {
10033 			super(parent, invokingState);
10034 		}
10035 		@Override public int getRuleIndex() { return RULE_eqKey; }
10036 		@Override
10037 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10038 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqKey(this);
10039 			else return visitor.visitChildren(this);
10040 		}
10041 	}
10042 
10043 	public final EqKeyContext eqKey() throws RecognitionException {
10044 		EqKeyContext _localctx = new EqKeyContext(_ctx, getState());
10045 		enterRule(_localctx, 186, RULE_eqKey);
10046 		int _la;
10047 		try {
10048 			enterOuterAlt(_localctx, 1);
10049 			{
10050 			setState(1780);
10051 			_la = _input.LA(1);
10052 			if ( !(_la==ONLINE || _la==RESUMABLE || ((((_la - 379)) & ~0x3f) == 0 && ((1L << (_la - 379)) & ((1L << (ALLOW_PAGE_LOCKS - 379)) | (1L << (ALLOW_ROW_LOCKS - 379)) | (1L << (COMPRESSION_DELAY - 379)) | (1L << (STATISTICS_INCREMENTAL - 379)) | (1L << (STATISTICS_NORECOMPUTE - 379)) | (1L << (SORT_IN_TEMPDB - 379)) | (1L << (IGNORE_DUP_KEY - 379)) | (1L << (PAD_INDEX - 379)) | (1L << (DROP_EXISTING - 379)))) != 0) || _la==OPTIMIZE_FOR_SEQUENTIAL_KEY) ) {
10053 			_errHandler.recoverInline(this);
10054 			}
10055 			else {
10056 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10057 				_errHandler.reportMatch(this);
10058 				consume();
10059 			}
10060 			}
10061 		}
10062 		catch (RecognitionException re) {
10063 			_localctx.exception = re;
10064 			_errHandler.reportError(this, re);
10065 			_errHandler.recover(this, re);
10066 		}
10067 		finally {
10068 			exitRule();
10069 		}
10070 		return _localctx;
10071 	}
10072 
10073 	public static class EqOnOffContext extends ParserRuleContext {
10074 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
10075 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
10076 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
10077 		public EqOnOffContext(ParserRuleContext parent, int invokingState) {
10078 			super(parent, invokingState);
10079 		}
10080 		@Override public int getRuleIndex() { return RULE_eqOnOff; }
10081 		@Override
10082 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10083 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqOnOff(this);
10084 			else return visitor.visitChildren(this);
10085 		}
10086 	}
10087 
10088 	public final EqOnOffContext eqOnOff() throws RecognitionException {
10089 		EqOnOffContext _localctx = new EqOnOffContext(_ctx, getState());
10090 		enterRule(_localctx, 188, RULE_eqOnOff);
10091 		int _la;
10092 		try {
10093 			enterOuterAlt(_localctx, 1);
10094 			{
10095 			setState(1782);
10096 			match(EQ_);
10097 			setState(1783);
10098 			_la = _input.LA(1);
10099 			if ( !(_la==ON || _la==OFF) ) {
10100 			_errHandler.recoverInline(this);
10101 			}
10102 			else {
10103 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10104 				_errHandler.reportMatch(this);
10105 				consume();
10106 			}
10107 			}
10108 		}
10109 		catch (RecognitionException re) {
10110 			_localctx.exception = re;
10111 			_errHandler.reportError(this, re);
10112 			_errHandler.recover(this, re);
10113 		}
10114 		finally {
10115 			exitRule();
10116 		}
10117 		return _localctx;
10118 	}
10119 
10120 	public static class OnPartitionClauseContext extends ParserRuleContext {
10121 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
10122 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
10123 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10124 		public PartitionExpressionsContext partitionExpressions() {
10125 			return getRuleContext(PartitionExpressionsContext.class,0);
10126 		}
10127 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10128 		public OnPartitionClauseContext(ParserRuleContext parent, int invokingState) {
10129 			super(parent, invokingState);
10130 		}
10131 		@Override public int getRuleIndex() { return RULE_onPartitionClause; }
10132 		@Override
10133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnPartitionClause(this);
10135 			else return visitor.visitChildren(this);
10136 		}
10137 	}
10138 
10139 	public final OnPartitionClauseContext onPartitionClause() throws RecognitionException {
10140 		OnPartitionClauseContext _localctx = new OnPartitionClauseContext(_ctx, getState());
10141 		enterRule(_localctx, 190, RULE_onPartitionClause);
10142 		try {
10143 			enterOuterAlt(_localctx, 1);
10144 			{
10145 			setState(1785);
10146 			match(ON);
10147 			setState(1786);
10148 			match(PARTITIONS);
10149 			setState(1787);
10150 			match(LP_);
10151 			setState(1788);
10152 			partitionExpressions();
10153 			setState(1789);
10154 			match(RP_);
10155 			}
10156 		}
10157 		catch (RecognitionException re) {
10158 			_localctx.exception = re;
10159 			_errHandler.reportError(this, re);
10160 			_errHandler.recover(this, re);
10161 		}
10162 		finally {
10163 			exitRule();
10164 		}
10165 		return _localctx;
10166 	}
10167 
10168 	public static class PartitionExpressionsContext extends ParserRuleContext {
10169 		public List<PartitionExpressionContext> partitionExpression() {
10170 			return getRuleContexts(PartitionExpressionContext.class);
10171 		}
10172 		public PartitionExpressionContext partitionExpression(int i) {
10173 			return getRuleContext(PartitionExpressionContext.class,i);
10174 		}
10175 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
10176 		public TerminalNode COMMA_(int i) {
10177 			return getToken(SQLServerStatementParser.COMMA_, i);
10178 		}
10179 		public PartitionExpressionsContext(ParserRuleContext parent, int invokingState) {
10180 			super(parent, invokingState);
10181 		}
10182 		@Override public int getRuleIndex() { return RULE_partitionExpressions; }
10183 		@Override
10184 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10185 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionExpressions(this);
10186 			else return visitor.visitChildren(this);
10187 		}
10188 	}
10189 
10190 	public final PartitionExpressionsContext partitionExpressions() throws RecognitionException {
10191 		PartitionExpressionsContext _localctx = new PartitionExpressionsContext(_ctx, getState());
10192 		enterRule(_localctx, 192, RULE_partitionExpressions);
10193 		int _la;
10194 		try {
10195 			enterOuterAlt(_localctx, 1);
10196 			{
10197 			setState(1791);
10198 			partitionExpression();
10199 			setState(1796);
10200 			_errHandler.sync(this);
10201 			_la = _input.LA(1);
10202 			while (_la==COMMA_) {
10203 				{
10204 				{
10205 				setState(1792);
10206 				match(COMMA_);
10207 				setState(1793);
10208 				partitionExpression();
10209 				}
10210 				}
10211 				setState(1798);
10212 				_errHandler.sync(this);
10213 				_la = _input.LA(1);
10214 			}
10215 			}
10216 		}
10217 		catch (RecognitionException re) {
10218 			_localctx.exception = re;
10219 			_errHandler.reportError(this, re);
10220 			_errHandler.recover(this, re);
10221 		}
10222 		finally {
10223 			exitRule();
10224 		}
10225 		return _localctx;
10226 	}
10227 
10228 	public static class PartitionExpressionContext extends ParserRuleContext {
10229 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10230 		public NumberRangeContext numberRange() {
10231 			return getRuleContext(NumberRangeContext.class,0);
10232 		}
10233 		public PartitionExpressionContext(ParserRuleContext parent, int invokingState) {
10234 			super(parent, invokingState);
10235 		}
10236 		@Override public int getRuleIndex() { return RULE_partitionExpression; }
10237 		@Override
10238 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10239 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionExpression(this);
10240 			else return visitor.visitChildren(this);
10241 		}
10242 	}
10243 
10244 	public final PartitionExpressionContext partitionExpression() throws RecognitionException {
10245 		PartitionExpressionContext _localctx = new PartitionExpressionContext(_ctx, getState());
10246 		enterRule(_localctx, 194, RULE_partitionExpression);
10247 		try {
10248 			setState(1801);
10249 			_errHandler.sync(this);
10250 			switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) {
10251 			case 1:
10252 				enterOuterAlt(_localctx, 1);
10253 				{
10254 				setState(1799);
10255 				match(NUMBER_);
10256 				}
10257 				break;
10258 			case 2:
10259 				enterOuterAlt(_localctx, 2);
10260 				{
10261 				setState(1800);
10262 				numberRange();
10263 				}
10264 				break;
10265 			}
10266 		}
10267 		catch (RecognitionException re) {
10268 			_localctx.exception = re;
10269 			_errHandler.reportError(this, re);
10270 			_errHandler.recover(this, re);
10271 		}
10272 		finally {
10273 			exitRule();
10274 		}
10275 		return _localctx;
10276 	}
10277 
10278 	public static class NumberRangeContext extends ParserRuleContext {
10279 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
10280 		public TerminalNode NUMBER_(int i) {
10281 			return getToken(SQLServerStatementParser.NUMBER_, i);
10282 		}
10283 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
10284 		public NumberRangeContext(ParserRuleContext parent, int invokingState) {
10285 			super(parent, invokingState);
10286 		}
10287 		@Override public int getRuleIndex() { return RULE_numberRange; }
10288 		@Override
10289 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10290 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNumberRange(this);
10291 			else return visitor.visitChildren(this);
10292 		}
10293 	}
10294 
10295 	public final NumberRangeContext numberRange() throws RecognitionException {
10296 		NumberRangeContext _localctx = new NumberRangeContext(_ctx, getState());
10297 		enterRule(_localctx, 196, RULE_numberRange);
10298 		try {
10299 			enterOuterAlt(_localctx, 1);
10300 			{
10301 			setState(1803);
10302 			match(NUMBER_);
10303 			setState(1804);
10304 			match(TO);
10305 			setState(1805);
10306 			match(NUMBER_);
10307 			}
10308 		}
10309 		catch (RecognitionException re) {
10310 			_localctx.exception = re;
10311 			_errHandler.reportError(this, re);
10312 			_errHandler.recover(this, re);
10313 		}
10314 		finally {
10315 			exitRule();
10316 		}
10317 		return _localctx;
10318 	}
10319 
10320 	public static class LowPriorityLockWaitContext extends ParserRuleContext {
10321 		public TerminalNode WAIT_AT_LOW_PRIORITY() { return getToken(SQLServerStatementParser.WAIT_AT_LOW_PRIORITY, 0); }
10322 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10323 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
10324 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
10325 		public TerminalNode EQ_(int i) {
10326 			return getToken(SQLServerStatementParser.EQ_, i);
10327 		}
10328 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10329 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
10330 		public TerminalNode ABORT_AFTER_WAIT() { return getToken(SQLServerStatementParser.ABORT_AFTER_WAIT, 0); }
10331 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10332 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
10333 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
10334 		public TerminalNode BLOCKERS() { return getToken(SQLServerStatementParser.BLOCKERS, 0); }
10335 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
10336 		public LowPriorityLockWaitContext(ParserRuleContext parent, int invokingState) {
10337 			super(parent, invokingState);
10338 		}
10339 		@Override public int getRuleIndex() { return RULE_lowPriorityLockWait; }
10340 		@Override
10341 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10342 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLowPriorityLockWait(this);
10343 			else return visitor.visitChildren(this);
10344 		}
10345 	}
10346 
10347 	public final LowPriorityLockWaitContext lowPriorityLockWait() throws RecognitionException {
10348 		LowPriorityLockWaitContext _localctx = new LowPriorityLockWaitContext(_ctx, getState());
10349 		enterRule(_localctx, 198, RULE_lowPriorityLockWait);
10350 		int _la;
10351 		try {
10352 			enterOuterAlt(_localctx, 1);
10353 			{
10354 			setState(1807);
10355 			match(WAIT_AT_LOW_PRIORITY);
10356 			setState(1808);
10357 			match(LP_);
10358 			setState(1809);
10359 			match(MAX_DURATION);
10360 			setState(1810);
10361 			match(EQ_);
10362 			setState(1811);
10363 			match(NUMBER_);
10364 			setState(1813);
10365 			_errHandler.sync(this);
10366 			_la = _input.LA(1);
10367 			if (_la==MINUTES) {
10368 				{
10369 				setState(1812);
10370 				match(MINUTES);
10371 				}
10372 			}
10373 
10374 			setState(1815);
10375 			match(COMMA_);
10376 			setState(1816);
10377 			match(ABORT_AFTER_WAIT);
10378 			setState(1817);
10379 			match(EQ_);
10380 			setState(1818);
10381 			_la = _input.LA(1);
10382 			if ( !(((((_la - 240)) & ~0x3f) == 0 && ((1L << (_la - 240)) & ((1L << (BLOCKERS - 240)) | (1L << (NONE - 240)) | (1L << (SELF - 240)))) != 0)) ) {
10383 			_errHandler.recoverInline(this);
10384 			}
10385 			else {
10386 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10387 				_errHandler.reportMatch(this);
10388 				consume();
10389 			}
10390 			setState(1819);
10391 			match(RP_);
10392 			}
10393 		}
10394 		catch (RecognitionException re) {
10395 			_localctx.exception = re;
10396 			_errHandler.reportError(this, re);
10397 			_errHandler.recover(this, re);
10398 		}
10399 		finally {
10400 			exitRule();
10401 		}
10402 		return _localctx;
10403 	}
10404 
10405 	public static class OnLowPriorLockWaitContext extends ParserRuleContext {
10406 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
10407 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10408 		public LowPriorityLockWaitContext lowPriorityLockWait() {
10409 			return getRuleContext(LowPriorityLockWaitContext.class,0);
10410 		}
10411 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10412 		public OnLowPriorLockWaitContext(ParserRuleContext parent, int invokingState) {
10413 			super(parent, invokingState);
10414 		}
10415 		@Override public int getRuleIndex() { return RULE_onLowPriorLockWait; }
10416 		@Override
10417 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10418 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnLowPriorLockWait(this);
10419 			else return visitor.visitChildren(this);
10420 		}
10421 	}
10422 
10423 	public final OnLowPriorLockWaitContext onLowPriorLockWait() throws RecognitionException {
10424 		OnLowPriorLockWaitContext _localctx = new OnLowPriorLockWaitContext(_ctx, getState());
10425 		enterRule(_localctx, 200, RULE_onLowPriorLockWait);
10426 		int _la;
10427 		try {
10428 			enterOuterAlt(_localctx, 1);
10429 			{
10430 			setState(1821);
10431 			match(ON);
10432 			setState(1826);
10433 			_errHandler.sync(this);
10434 			_la = _input.LA(1);
10435 			if (_la==LP_) {
10436 				{
10437 				setState(1822);
10438 				match(LP_);
10439 				setState(1823);
10440 				lowPriorityLockWait();
10441 				setState(1824);
10442 				match(RP_);
10443 				}
10444 			}
10445 
10446 			}
10447 		}
10448 		catch (RecognitionException re) {
10449 			_localctx.exception = re;
10450 			_errHandler.reportError(this, re);
10451 			_errHandler.recover(this, re);
10452 		}
10453 		finally {
10454 			exitRule();
10455 		}
10456 		return _localctx;
10457 	}
10458 
10459 	public static class IgnoredIdentifierContext extends ParserRuleContext {
10460 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
10461 		public IgnoredIdentifierContext(ParserRuleContext parent, int invokingState) {
10462 			super(parent, invokingState);
10463 		}
10464 		@Override public int getRuleIndex() { return RULE_ignoredIdentifier; }
10465 		@Override
10466 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10467 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredIdentifier(this);
10468 			else return visitor.visitChildren(this);
10469 		}
10470 	}
10471 
10472 	public final IgnoredIdentifierContext ignoredIdentifier() throws RecognitionException {
10473 		IgnoredIdentifierContext _localctx = new IgnoredIdentifierContext(_ctx, getState());
10474 		enterRule(_localctx, 202, RULE_ignoredIdentifier);
10475 		try {
10476 			enterOuterAlt(_localctx, 1);
10477 			{
10478 			setState(1828);
10479 			match(IDENTIFIER_);
10480 			}
10481 		}
10482 		catch (RecognitionException re) {
10483 			_localctx.exception = re;
10484 			_errHandler.reportError(this, re);
10485 			_errHandler.recover(this, re);
10486 		}
10487 		finally {
10488 			exitRule();
10489 		}
10490 		return _localctx;
10491 	}
10492 
10493 	public static class IgnoredIdentifiersContext extends ParserRuleContext {
10494 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
10495 			return getRuleContexts(IgnoredIdentifierContext.class);
10496 		}
10497 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
10498 			return getRuleContext(IgnoredIdentifierContext.class,i);
10499 		}
10500 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
10501 		public TerminalNode COMMA_(int i) {
10502 			return getToken(SQLServerStatementParser.COMMA_, i);
10503 		}
10504 		public IgnoredIdentifiersContext(ParserRuleContext parent, int invokingState) {
10505 			super(parent, invokingState);
10506 		}
10507 		@Override public int getRuleIndex() { return RULE_ignoredIdentifiers; }
10508 		@Override
10509 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10510 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredIdentifiers(this);
10511 			else return visitor.visitChildren(this);
10512 		}
10513 	}
10514 
10515 	public final IgnoredIdentifiersContext ignoredIdentifiers() throws RecognitionException {
10516 		IgnoredIdentifiersContext _localctx = new IgnoredIdentifiersContext(_ctx, getState());
10517 		enterRule(_localctx, 204, RULE_ignoredIdentifiers);
10518 		try {
10519 			int _alt;
10520 			enterOuterAlt(_localctx, 1);
10521 			{
10522 			setState(1830);
10523 			ignoredIdentifier();
10524 			setState(1835);
10525 			_errHandler.sync(this);
10526 			_alt = getInterpreter().adaptivePredict(_input,106,_ctx);
10527 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
10528 				if ( _alt==1 ) {
10529 					{
10530 					{
10531 					setState(1831);
10532 					match(COMMA_);
10533 					setState(1832);
10534 					ignoredIdentifier();
10535 					}
10536 					} 
10537 				}
10538 				setState(1837);
10539 				_errHandler.sync(this);
10540 				_alt = getInterpreter().adaptivePredict(_input,106,_ctx);
10541 			}
10542 			}
10543 		}
10544 		catch (RecognitionException re) {
10545 			_localctx.exception = re;
10546 			_errHandler.reportError(this, re);
10547 			_errHandler.recover(this, re);
10548 		}
10549 		finally {
10550 			exitRule();
10551 		}
10552 		return _localctx;
10553 	}
10554 
10555 	public static class MatchNoneContext extends ParserRuleContext {
10556 		public MatchNoneContext(ParserRuleContext parent, int invokingState) {
10557 			super(parent, invokingState);
10558 		}
10559 		@Override public int getRuleIndex() { return RULE_matchNone; }
10560 		@Override
10561 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10562 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMatchNone(this);
10563 			else return visitor.visitChildren(this);
10564 		}
10565 	}
10566 
10567 	public final MatchNoneContext matchNone() throws RecognitionException {
10568 		MatchNoneContext _localctx = new MatchNoneContext(_ctx, getState());
10569 		enterRule(_localctx, 206, RULE_matchNone);
10570 		try {
10571 			enterOuterAlt(_localctx, 1);
10572 			{
10573 			setState(1838);
10574 			match(T__0);
10575 			}
10576 		}
10577 		catch (RecognitionException re) {
10578 			_localctx.exception = re;
10579 			_errHandler.reportError(this, re);
10580 			_errHandler.recover(this, re);
10581 		}
10582 		finally {
10583 			exitRule();
10584 		}
10585 		return _localctx;
10586 	}
10587 
10588 	public static class VariableNameContext extends ParserRuleContext {
10589 		public IdentifierContext identifier() {
10590 			return getRuleContext(IdentifierContext.class,0);
10591 		}
10592 		public VariableNameContext(ParserRuleContext parent, int invokingState) {
10593 			super(parent, invokingState);
10594 		}
10595 		@Override public int getRuleIndex() { return RULE_variableName; }
10596 		@Override
10597 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10598 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableName(this);
10599 			else return visitor.visitChildren(this);
10600 		}
10601 	}
10602 
10603 	public final VariableNameContext variableName() throws RecognitionException {
10604 		VariableNameContext _localctx = new VariableNameContext(_ctx, getState());
10605 		enterRule(_localctx, 208, RULE_variableName);
10606 		try {
10607 			enterOuterAlt(_localctx, 1);
10608 			{
10609 			setState(1840);
10610 			identifier();
10611 			}
10612 		}
10613 		catch (RecognitionException re) {
10614 			_localctx.exception = re;
10615 			_errHandler.reportError(this, re);
10616 			_errHandler.recover(this, re);
10617 		}
10618 		finally {
10619 			exitRule();
10620 		}
10621 		return _localctx;
10622 	}
10623 
10624 	public static class ExecuteAsClauseContext extends ParserRuleContext {
10625 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
10626 		public TerminalNode EXEC() { return getToken(SQLServerStatementParser.EXEC, 0); }
10627 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
10628 		public TerminalNode CALLER() { return getToken(SQLServerStatementParser.CALLER, 0); }
10629 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
10630 		public TerminalNode OWNER() { return getToken(SQLServerStatementParser.OWNER, 0); }
10631 		public StringLiteralsContext stringLiterals() {
10632 			return getRuleContext(StringLiteralsContext.class,0);
10633 		}
10634 		public ExecuteAsClauseContext(ParserRuleContext parent, int invokingState) {
10635 			super(parent, invokingState);
10636 		}
10637 		@Override public int getRuleIndex() { return RULE_executeAsClause; }
10638 		@Override
10639 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10640 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExecuteAsClause(this);
10641 			else return visitor.visitChildren(this);
10642 		}
10643 	}
10644 
10645 	public final ExecuteAsClauseContext executeAsClause() throws RecognitionException {
10646 		ExecuteAsClauseContext _localctx = new ExecuteAsClauseContext(_ctx, getState());
10647 		enterRule(_localctx, 210, RULE_executeAsClause);
10648 		int _la;
10649 		try {
10650 			enterOuterAlt(_localctx, 1);
10651 			{
10652 			setState(1842);
10653 			_la = _input.LA(1);
10654 			if ( !(_la==EXECUTE || _la==EXEC) ) {
10655 			_errHandler.recoverInline(this);
10656 			}
10657 			else {
10658 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10659 				_errHandler.reportMatch(this);
10660 				consume();
10661 			}
10662 			setState(1843);
10663 			match(AS);
10664 			setState(1848);
10665 			_errHandler.sync(this);
10666 			switch (_input.LA(1)) {
10667 			case CALLER:
10668 				{
10669 				setState(1844);
10670 				match(CALLER);
10671 				}
10672 				break;
10673 			case SELF:
10674 				{
10675 				setState(1845);
10676 				match(SELF);
10677 				}
10678 				break;
10679 			case OWNER:
10680 				{
10681 				setState(1846);
10682 				match(OWNER);
10683 				}
10684 				break;
10685 			case STRING_:
10686 			case NCHAR_TEXT:
10687 				{
10688 				setState(1847);
10689 				stringLiterals();
10690 				}
10691 				break;
10692 			default:
10693 				throw new NoViableAltException(this);
10694 			}
10695 			}
10696 		}
10697 		catch (RecognitionException re) {
10698 			_localctx.exception = re;
10699 			_errHandler.reportError(this, re);
10700 			_errHandler.recover(this, re);
10701 		}
10702 		finally {
10703 			exitRule();
10704 		}
10705 		return _localctx;
10706 	}
10707 
10708 	public static class TransactionNameContext extends ParserRuleContext {
10709 		public IdentifierContext identifier() {
10710 			return getRuleContext(IdentifierContext.class,0);
10711 		}
10712 		public TransactionNameContext(ParserRuleContext parent, int invokingState) {
10713 			super(parent, invokingState);
10714 		}
10715 		@Override public int getRuleIndex() { return RULE_transactionName; }
10716 		@Override
10717 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10718 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTransactionName(this);
10719 			else return visitor.visitChildren(this);
10720 		}
10721 	}
10722 
10723 	public final TransactionNameContext transactionName() throws RecognitionException {
10724 		TransactionNameContext _localctx = new TransactionNameContext(_ctx, getState());
10725 		enterRule(_localctx, 212, RULE_transactionName);
10726 		try {
10727 			enterOuterAlt(_localctx, 1);
10728 			{
10729 			setState(1850);
10730 			identifier();
10731 			}
10732 		}
10733 		catch (RecognitionException re) {
10734 			_localctx.exception = re;
10735 			_errHandler.reportError(this, re);
10736 			_errHandler.recover(this, re);
10737 		}
10738 		finally {
10739 			exitRule();
10740 		}
10741 		return _localctx;
10742 	}
10743 
10744 	public static class TransactionVariableNameContext extends ParserRuleContext {
10745 		public VariableNameContext variableName() {
10746 			return getRuleContext(VariableNameContext.class,0);
10747 		}
10748 		public TransactionVariableNameContext(ParserRuleContext parent, int invokingState) {
10749 			super(parent, invokingState);
10750 		}
10751 		@Override public int getRuleIndex() { return RULE_transactionVariableName; }
10752 		@Override
10753 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10754 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTransactionVariableName(this);
10755 			else return visitor.visitChildren(this);
10756 		}
10757 	}
10758 
10759 	public final TransactionVariableNameContext transactionVariableName() throws RecognitionException {
10760 		TransactionVariableNameContext _localctx = new TransactionVariableNameContext(_ctx, getState());
10761 		enterRule(_localctx, 214, RULE_transactionVariableName);
10762 		try {
10763 			enterOuterAlt(_localctx, 1);
10764 			{
10765 			setState(1852);
10766 			variableName();
10767 			}
10768 		}
10769 		catch (RecognitionException re) {
10770 			_localctx.exception = re;
10771 			_errHandler.reportError(this, re);
10772 			_errHandler.recover(this, re);
10773 		}
10774 		finally {
10775 			exitRule();
10776 		}
10777 		return _localctx;
10778 	}
10779 
10780 	public static class SavepointNameContext extends ParserRuleContext {
10781 		public IdentifierContext identifier() {
10782 			return getRuleContext(IdentifierContext.class,0);
10783 		}
10784 		public SavepointNameContext(ParserRuleContext parent, int invokingState) {
10785 			super(parent, invokingState);
10786 		}
10787 		@Override public int getRuleIndex() { return RULE_savepointName; }
10788 		@Override
10789 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10790 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepointName(this);
10791 			else return visitor.visitChildren(this);
10792 		}
10793 	}
10794 
10795 	public final SavepointNameContext savepointName() throws RecognitionException {
10796 		SavepointNameContext _localctx = new SavepointNameContext(_ctx, getState());
10797 		enterRule(_localctx, 216, RULE_savepointName);
10798 		try {
10799 			enterOuterAlt(_localctx, 1);
10800 			{
10801 			setState(1854);
10802 			identifier();
10803 			}
10804 		}
10805 		catch (RecognitionException re) {
10806 			_localctx.exception = re;
10807 			_errHandler.reportError(this, re);
10808 			_errHandler.recover(this, re);
10809 		}
10810 		finally {
10811 			exitRule();
10812 		}
10813 		return _localctx;
10814 	}
10815 
10816 	public static class SavepointVariableNameContext extends ParserRuleContext {
10817 		public VariableNameContext variableName() {
10818 			return getRuleContext(VariableNameContext.class,0);
10819 		}
10820 		public SavepointVariableNameContext(ParserRuleContext parent, int invokingState) {
10821 			super(parent, invokingState);
10822 		}
10823 		@Override public int getRuleIndex() { return RULE_savepointVariableName; }
10824 		@Override
10825 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10826 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepointVariableName(this);
10827 			else return visitor.visitChildren(this);
10828 		}
10829 	}
10830 
10831 	public final SavepointVariableNameContext savepointVariableName() throws RecognitionException {
10832 		SavepointVariableNameContext _localctx = new SavepointVariableNameContext(_ctx, getState());
10833 		enterRule(_localctx, 218, RULE_savepointVariableName);
10834 		try {
10835 			enterOuterAlt(_localctx, 1);
10836 			{
10837 			setState(1856);
10838 			variableName();
10839 			}
10840 		}
10841 		catch (RecognitionException re) {
10842 			_localctx.exception = re;
10843 			_errHandler.reportError(this, re);
10844 			_errHandler.recover(this, re);
10845 		}
10846 		finally {
10847 			exitRule();
10848 		}
10849 		return _localctx;
10850 	}
10851 
10852 	public static class EntityTypeContext extends ParserRuleContext {
10853 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
10854 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
10855 		public EntityTypeContext(ParserRuleContext parent, int invokingState) {
10856 			super(parent, invokingState);
10857 		}
10858 		@Override public int getRuleIndex() { return RULE_entityType; }
10859 		@Override
10860 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10861 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEntityType(this);
10862 			else return visitor.visitChildren(this);
10863 		}
10864 	}
10865 
10866 	public final EntityTypeContext entityType() throws RecognitionException {
10867 		EntityTypeContext _localctx = new EntityTypeContext(_ctx, getState());
10868 		enterRule(_localctx, 220, RULE_entityType);
10869 		int _la;
10870 		try {
10871 			enterOuterAlt(_localctx, 1);
10872 			{
10873 			setState(1858);
10874 			_la = _input.LA(1);
10875 			if ( !(_la==TYPE || _la==OBJECT) ) {
10876 			_errHandler.recoverInline(this);
10877 			}
10878 			else {
10879 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10880 				_errHandler.reportMatch(this);
10881 				consume();
10882 			}
10883 			}
10884 		}
10885 		catch (RecognitionException re) {
10886 			_localctx.exception = re;
10887 			_errHandler.reportError(this, re);
10888 			_errHandler.recover(this, re);
10889 		}
10890 		finally {
10891 			exitRule();
10892 		}
10893 		return _localctx;
10894 	}
10895 
10896 	public static class IfExistsContext extends ParserRuleContext {
10897 		public TerminalNode IF() { return getToken(SQLServerStatementParser.IF, 0); }
10898 		public TerminalNode EXISTS() { return getToken(SQLServerStatementParser.EXISTS, 0); }
10899 		public IfExistsContext(ParserRuleContext parent, int invokingState) {
10900 			super(parent, invokingState);
10901 		}
10902 		@Override public int getRuleIndex() { return RULE_ifExists; }
10903 		@Override
10904 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10905 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIfExists(this);
10906 			else return visitor.visitChildren(this);
10907 		}
10908 	}
10909 
10910 	public final IfExistsContext ifExists() throws RecognitionException {
10911 		IfExistsContext _localctx = new IfExistsContext(_ctx, getState());
10912 		enterRule(_localctx, 222, RULE_ifExists);
10913 		try {
10914 			enterOuterAlt(_localctx, 1);
10915 			{
10916 			setState(1860);
10917 			match(IF);
10918 			setState(1861);
10919 			match(EXISTS);
10920 			}
10921 		}
10922 		catch (RecognitionException re) {
10923 			_localctx.exception = re;
10924 			_errHandler.reportError(this, re);
10925 			_errHandler.recover(this, re);
10926 		}
10927 		finally {
10928 			exitRule();
10929 		}
10930 		return _localctx;
10931 	}
10932 
10933 	public static class CallContext extends ParserRuleContext {
10934 		public TerminalNode CALL() { return getToken(SQLServerStatementParser.CALL, 0); }
10935 		public CallContext(ParserRuleContext parent, int invokingState) {
10936 			super(parent, invokingState);
10937 		}
10938 		@Override public int getRuleIndex() { return RULE_call; }
10939 		@Override
10940 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10941 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCall(this);
10942 			else return visitor.visitChildren(this);
10943 		}
10944 	}
10945 
10946 	public final CallContext call() throws RecognitionException {
10947 		CallContext _localctx = new CallContext(_ctx, getState());
10948 		enterRule(_localctx, 224, RULE_call);
10949 		try {
10950 			enterOuterAlt(_localctx, 1);
10951 			{
10952 			setState(1863);
10953 			match(CALL);
10954 			}
10955 		}
10956 		catch (RecognitionException re) {
10957 			_localctx.exception = re;
10958 			_errHandler.reportError(this, re);
10959 			_errHandler.recover(this, re);
10960 		}
10961 		finally {
10962 			exitRule();
10963 		}
10964 		return _localctx;
10965 	}
10966 
10967 	public static class ExplainContext extends ParserRuleContext {
10968 		public TerminalNode EXPLAIN() { return getToken(SQLServerStatementParser.EXPLAIN, 0); }
10969 		public ExplainableStatementContext explainableStatement() {
10970 			return getRuleContext(ExplainableStatementContext.class,0);
10971 		}
10972 		public TerminalNode WITH_RECOMMENDATIONS() { return getToken(SQLServerStatementParser.WITH_RECOMMENDATIONS, 0); }
10973 		public ExplainContext(ParserRuleContext parent, int invokingState) {
10974 			super(parent, invokingState);
10975 		}
10976 		@Override public int getRuleIndex() { return RULE_explain; }
10977 		@Override
10978 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10979 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExplain(this);
10980 			else return visitor.visitChildren(this);
10981 		}
10982 	}
10983 
10984 	public final ExplainContext explain() throws RecognitionException {
10985 		ExplainContext _localctx = new ExplainContext(_ctx, getState());
10986 		enterRule(_localctx, 226, RULE_explain);
10987 		int _la;
10988 		try {
10989 			enterOuterAlt(_localctx, 1);
10990 			{
10991 			setState(1865);
10992 			match(EXPLAIN);
10993 			setState(1867);
10994 			_errHandler.sync(this);
10995 			_la = _input.LA(1);
10996 			if (_la==WITH_RECOMMENDATIONS) {
10997 				{
10998 				setState(1866);
10999 				match(WITH_RECOMMENDATIONS);
11000 				}
11001 			}
11002 
11003 			setState(1869);
11004 			explainableStatement();
11005 			}
11006 		}
11007 		catch (RecognitionException re) {
11008 			_localctx.exception = re;
11009 			_errHandler.reportError(this, re);
11010 			_errHandler.recover(this, re);
11011 		}
11012 		finally {
11013 			exitRule();
11014 		}
11015 		return _localctx;
11016 	}
11017 
11018 	public static class ExplainableStatementContext extends ParserRuleContext {
11019 		public SelectContext select() {
11020 			return getRuleContext(SelectContext.class,0);
11021 		}
11022 		public InsertContext insert() {
11023 			return getRuleContext(InsertContext.class,0);
11024 		}
11025 		public UpdateContext update() {
11026 			return getRuleContext(UpdateContext.class,0);
11027 		}
11028 		public DeleteContext delete() {
11029 			return getRuleContext(DeleteContext.class,0);
11030 		}
11031 		public CreateTableAsSelectClauseContext createTableAsSelectClause() {
11032 			return getRuleContext(CreateTableAsSelectClauseContext.class,0);
11033 		}
11034 		public ExplainableStatementContext(ParserRuleContext parent, int invokingState) {
11035 			super(parent, invokingState);
11036 		}
11037 		@Override public int getRuleIndex() { return RULE_explainableStatement; }
11038 		@Override
11039 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11040 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExplainableStatement(this);
11041 			else return visitor.visitChildren(this);
11042 		}
11043 	}
11044 
11045 	public final ExplainableStatementContext explainableStatement() throws RecognitionException {
11046 		ExplainableStatementContext _localctx = new ExplainableStatementContext(_ctx, getState());
11047 		enterRule(_localctx, 228, RULE_explainableStatement);
11048 		try {
11049 			setState(1876);
11050 			_errHandler.sync(this);
11051 			switch ( getInterpreter().adaptivePredict(_input,109,_ctx) ) {
11052 			case 1:
11053 				enterOuterAlt(_localctx, 1);
11054 				{
11055 				setState(1871);
11056 				select();
11057 				}
11058 				break;
11059 			case 2:
11060 				enterOuterAlt(_localctx, 2);
11061 				{
11062 				setState(1872);
11063 				insert();
11064 				}
11065 				break;
11066 			case 3:
11067 				enterOuterAlt(_localctx, 3);
11068 				{
11069 				setState(1873);
11070 				update();
11071 				}
11072 				break;
11073 			case 4:
11074 				enterOuterAlt(_localctx, 4);
11075 				{
11076 				setState(1874);
11077 				delete();
11078 				}
11079 				break;
11080 			case 5:
11081 				enterOuterAlt(_localctx, 5);
11082 				{
11083 				setState(1875);
11084 				createTableAsSelectClause();
11085 				}
11086 				break;
11087 			}
11088 		}
11089 		catch (RecognitionException re) {
11090 			_localctx.exception = re;
11091 			_errHandler.reportError(this, re);
11092 			_errHandler.recover(this, re);
11093 		}
11094 		finally {
11095 			exitRule();
11096 		}
11097 		return _localctx;
11098 	}
11099 
11100 	public static class CreateTableContext extends ParserRuleContext {
11101 		public CreateTableClauseContext createTableClause() {
11102 			return getRuleContext(CreateTableClauseContext.class,0);
11103 		}
11104 		public CreateTableAsSelectClauseContext createTableAsSelectClause() {
11105 			return getRuleContext(CreateTableAsSelectClauseContext.class,0);
11106 		}
11107 		public CreateTableContext(ParserRuleContext parent, int invokingState) {
11108 			super(parent, invokingState);
11109 		}
11110 		@Override public int getRuleIndex() { return RULE_createTable; }
11111 		@Override
11112 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11113 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTable(this);
11114 			else return visitor.visitChildren(this);
11115 		}
11116 	}
11117 
11118 	public final CreateTableContext createTable() throws RecognitionException {
11119 		CreateTableContext _localctx = new CreateTableContext(_ctx, getState());
11120 		enterRule(_localctx, 230, RULE_createTable);
11121 		try {
11122 			setState(1880);
11123 			_errHandler.sync(this);
11124 			switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) {
11125 			case 1:
11126 				enterOuterAlt(_localctx, 1);
11127 				{
11128 				setState(1878);
11129 				createTableClause();
11130 				}
11131 				break;
11132 			case 2:
11133 				enterOuterAlt(_localctx, 2);
11134 				{
11135 				setState(1879);
11136 				createTableAsSelectClause();
11137 				}
11138 				break;
11139 			}
11140 		}
11141 		catch (RecognitionException re) {
11142 			_localctx.exception = re;
11143 			_errHandler.reportError(this, re);
11144 			_errHandler.recover(this, re);
11145 		}
11146 		finally {
11147 			exitRule();
11148 		}
11149 		return _localctx;
11150 	}
11151 
11152 	public static class CreateTableClauseContext extends ParserRuleContext {
11153 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11154 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
11155 		public TableNameContext tableName() {
11156 			return getRuleContext(TableNameContext.class,0);
11157 		}
11158 		public FileTableClauseContext fileTableClause() {
11159 			return getRuleContext(FileTableClauseContext.class,0);
11160 		}
11161 		public CreateDefinitionClauseContext createDefinitionClause() {
11162 			return getRuleContext(CreateDefinitionClauseContext.class,0);
11163 		}
11164 		public CreateTableClauseContext(ParserRuleContext parent, int invokingState) {
11165 			super(parent, invokingState);
11166 		}
11167 		@Override public int getRuleIndex() { return RULE_createTableClause; }
11168 		@Override
11169 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11170 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableClause(this);
11171 			else return visitor.visitChildren(this);
11172 		}
11173 	}
11174 
11175 	public final CreateTableClauseContext createTableClause() throws RecognitionException {
11176 		CreateTableClauseContext _localctx = new CreateTableClauseContext(_ctx, getState());
11177 		enterRule(_localctx, 232, RULE_createTableClause);
11178 		try {
11179 			enterOuterAlt(_localctx, 1);
11180 			{
11181 			setState(1882);
11182 			match(CREATE);
11183 			setState(1883);
11184 			match(TABLE);
11185 			setState(1884);
11186 			tableName();
11187 			setState(1885);
11188 			fileTableClause();
11189 			setState(1886);
11190 			createDefinitionClause();
11191 			}
11192 		}
11193 		catch (RecognitionException re) {
11194 			_localctx.exception = re;
11195 			_errHandler.reportError(this, re);
11196 			_errHandler.recover(this, re);
11197 		}
11198 		finally {
11199 			exitRule();
11200 		}
11201 		return _localctx;
11202 	}
11203 
11204 	public static class CreateIndexContext extends ParserRuleContext {
11205 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11206 		public CreateIndexSpecificationContext createIndexSpecification() {
11207 			return getRuleContext(CreateIndexSpecificationContext.class,0);
11208 		}
11209 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
11210 		public IndexNameContext indexName() {
11211 			return getRuleContext(IndexNameContext.class,0);
11212 		}
11213 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11214 		public TableNameContext tableName() {
11215 			return getRuleContext(TableNameContext.class,0);
11216 		}
11217 		public ColumnNamesWithSortContext columnNamesWithSort() {
11218 			return getRuleContext(ColumnNamesWithSortContext.class,0);
11219 		}
11220 		public CreateIndexClauseContext createIndexClause() {
11221 			return getRuleContext(CreateIndexClauseContext.class,0);
11222 		}
11223 		public CreateIndexContext(ParserRuleContext parent, int invokingState) {
11224 			super(parent, invokingState);
11225 		}
11226 		@Override public int getRuleIndex() { return RULE_createIndex; }
11227 		@Override
11228 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11229 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndex(this);
11230 			else return visitor.visitChildren(this);
11231 		}
11232 	}
11233 
11234 	public final CreateIndexContext createIndex() throws RecognitionException {
11235 		CreateIndexContext _localctx = new CreateIndexContext(_ctx, getState());
11236 		enterRule(_localctx, 234, RULE_createIndex);
11237 		try {
11238 			enterOuterAlt(_localctx, 1);
11239 			{
11240 			setState(1888);
11241 			match(CREATE);
11242 			setState(1889);
11243 			createIndexSpecification();
11244 			setState(1890);
11245 			match(INDEX);
11246 			setState(1891);
11247 			indexName();
11248 			setState(1892);
11249 			match(ON);
11250 			setState(1893);
11251 			tableName();
11252 			setState(1894);
11253 			columnNamesWithSort();
11254 			setState(1895);
11255 			createIndexClause();
11256 			}
11257 		}
11258 		catch (RecognitionException re) {
11259 			_localctx.exception = re;
11260 			_errHandler.reportError(this, re);
11261 			_errHandler.recover(this, re);
11262 		}
11263 		finally {
11264 			exitRule();
11265 		}
11266 		return _localctx;
11267 	}
11268 
11269 	public static class CreateDatabaseContext extends ParserRuleContext {
11270 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11271 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
11272 		public DatabaseNameContext databaseName() {
11273 			return getRuleContext(DatabaseNameContext.class,0);
11274 		}
11275 		public CreateDatabaseClauseContext createDatabaseClause() {
11276 			return getRuleContext(CreateDatabaseClauseContext.class,0);
11277 		}
11278 		public CreateDatabaseContext(ParserRuleContext parent, int invokingState) {
11279 			super(parent, invokingState);
11280 		}
11281 		@Override public int getRuleIndex() { return RULE_createDatabase; }
11282 		@Override
11283 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11284 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDatabase(this);
11285 			else return visitor.visitChildren(this);
11286 		}
11287 	}
11288 
11289 	public final CreateDatabaseContext createDatabase() throws RecognitionException {
11290 		CreateDatabaseContext _localctx = new CreateDatabaseContext(_ctx, getState());
11291 		enterRule(_localctx, 236, RULE_createDatabase);
11292 		try {
11293 			enterOuterAlt(_localctx, 1);
11294 			{
11295 			setState(1897);
11296 			match(CREATE);
11297 			setState(1898);
11298 			match(DATABASE);
11299 			setState(1899);
11300 			databaseName();
11301 			setState(1900);
11302 			createDatabaseClause();
11303 			}
11304 		}
11305 		catch (RecognitionException re) {
11306 			_localctx.exception = re;
11307 			_errHandler.reportError(this, re);
11308 			_errHandler.recover(this, re);
11309 		}
11310 		finally {
11311 			exitRule();
11312 		}
11313 		return _localctx;
11314 	}
11315 
11316 	public static class CreateFunctionContext extends ParserRuleContext {
11317 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11318 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
11319 		public FunctionNameContext functionName() {
11320 			return getRuleContext(FunctionNameContext.class,0);
11321 		}
11322 		public FuncParametersContext funcParameters() {
11323 			return getRuleContext(FuncParametersContext.class,0);
11324 		}
11325 		public FuncReturnsContext funcReturns() {
11326 			return getRuleContext(FuncReturnsContext.class,0);
11327 		}
11328 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
11329 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11330 		public CreateFunctionContext(ParserRuleContext parent, int invokingState) {
11331 			super(parent, invokingState);
11332 		}
11333 		@Override public int getRuleIndex() { return RULE_createFunction; }
11334 		@Override
11335 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11336 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateFunction(this);
11337 			else return visitor.visitChildren(this);
11338 		}
11339 	}
11340 
11341 	public final CreateFunctionContext createFunction() throws RecognitionException {
11342 		CreateFunctionContext _localctx = new CreateFunctionContext(_ctx, getState());
11343 		enterRule(_localctx, 238, RULE_createFunction);
11344 		int _la;
11345 		try {
11346 			enterOuterAlt(_localctx, 1);
11347 			{
11348 			setState(1902);
11349 			match(CREATE);
11350 			setState(1905);
11351 			_errHandler.sync(this);
11352 			_la = _input.LA(1);
11353 			if (_la==OR) {
11354 				{
11355 				setState(1903);
11356 				match(OR);
11357 				setState(1904);
11358 				match(ALTER);
11359 				}
11360 			}
11361 
11362 			setState(1907);
11363 			match(FUNCTION);
11364 			setState(1908);
11365 			functionName();
11366 			setState(1909);
11367 			funcParameters();
11368 			setState(1910);
11369 			funcReturns();
11370 			}
11371 		}
11372 		catch (RecognitionException re) {
11373 			_localctx.exception = re;
11374 			_errHandler.reportError(this, re);
11375 			_errHandler.recover(this, re);
11376 		}
11377 		finally {
11378 			exitRule();
11379 		}
11380 		return _localctx;
11381 	}
11382 
11383 	public static class CreateProcedureContext extends ParserRuleContext {
11384 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11385 		public ProcedureNameContext procedureName() {
11386 			return getRuleContext(ProcedureNameContext.class,0);
11387 		}
11388 		public ProcParametersContext procParameters() {
11389 			return getRuleContext(ProcParametersContext.class,0);
11390 		}
11391 		public CreateOrAlterProcClauseContext createOrAlterProcClause() {
11392 			return getRuleContext(CreateOrAlterProcClauseContext.class,0);
11393 		}
11394 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
11395 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
11396 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
11397 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11398 		public CreateProcedureContext(ParserRuleContext parent, int invokingState) {
11399 			super(parent, invokingState);
11400 		}
11401 		@Override public int getRuleIndex() { return RULE_createProcedure; }
11402 		@Override
11403 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11404 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateProcedure(this);
11405 			else return visitor.visitChildren(this);
11406 		}
11407 	}
11408 
11409 	public final CreateProcedureContext createProcedure() throws RecognitionException {
11410 		CreateProcedureContext _localctx = new CreateProcedureContext(_ctx, getState());
11411 		enterRule(_localctx, 240, RULE_createProcedure);
11412 		int _la;
11413 		try {
11414 			enterOuterAlt(_localctx, 1);
11415 			{
11416 			setState(1912);
11417 			match(CREATE);
11418 			setState(1915);
11419 			_errHandler.sync(this);
11420 			_la = _input.LA(1);
11421 			if (_la==OR) {
11422 				{
11423 				setState(1913);
11424 				match(OR);
11425 				setState(1914);
11426 				match(ALTER);
11427 				}
11428 			}
11429 
11430 			setState(1917);
11431 			_la = _input.LA(1);
11432 			if ( !(_la==PROCEDURE || _la==PROC) ) {
11433 			_errHandler.recoverInline(this);
11434 			}
11435 			else {
11436 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11437 				_errHandler.reportMatch(this);
11438 				consume();
11439 			}
11440 			setState(1918);
11441 			procedureName();
11442 			setState(1919);
11443 			procParameters();
11444 			setState(1920);
11445 			createOrAlterProcClause();
11446 			}
11447 		}
11448 		catch (RecognitionException re) {
11449 			_localctx.exception = re;
11450 			_errHandler.reportError(this, re);
11451 			_errHandler.recover(this, re);
11452 		}
11453 		finally {
11454 			exitRule();
11455 		}
11456 		return _localctx;
11457 	}
11458 
11459 	public static class CreateViewContext extends ParserRuleContext {
11460 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11461 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
11462 		public ViewNameContext viewName() {
11463 			return getRuleContext(ViewNameContext.class,0);
11464 		}
11465 		public CreateOrAlterViewClauseContext createOrAlterViewClause() {
11466 			return getRuleContext(CreateOrAlterViewClauseContext.class,0);
11467 		}
11468 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
11469 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11470 		public CreateViewContext(ParserRuleContext parent, int invokingState) {
11471 			super(parent, invokingState);
11472 		}
11473 		@Override public int getRuleIndex() { return RULE_createView; }
11474 		@Override
11475 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11476 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateView(this);
11477 			else return visitor.visitChildren(this);
11478 		}
11479 	}
11480 
11481 	public final CreateViewContext createView() throws RecognitionException {
11482 		CreateViewContext _localctx = new CreateViewContext(_ctx, getState());
11483 		enterRule(_localctx, 242, RULE_createView);
11484 		int _la;
11485 		try {
11486 			enterOuterAlt(_localctx, 1);
11487 			{
11488 			setState(1922);
11489 			match(CREATE);
11490 			setState(1925);
11491 			_errHandler.sync(this);
11492 			_la = _input.LA(1);
11493 			if (_la==OR) {
11494 				{
11495 				setState(1923);
11496 				match(OR);
11497 				setState(1924);
11498 				match(ALTER);
11499 				}
11500 			}
11501 
11502 			setState(1927);
11503 			match(VIEW);
11504 			setState(1928);
11505 			viewName();
11506 			setState(1929);
11507 			createOrAlterViewClause();
11508 			}
11509 		}
11510 		catch (RecognitionException re) {
11511 			_localctx.exception = re;
11512 			_errHandler.reportError(this, re);
11513 			_errHandler.recover(this, re);
11514 		}
11515 		finally {
11516 			exitRule();
11517 		}
11518 		return _localctx;
11519 	}
11520 
11521 	public static class CreateTriggerContext extends ParserRuleContext {
11522 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11523 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
11524 		public TriggerNameContext triggerName() {
11525 			return getRuleContext(TriggerNameContext.class,0);
11526 		}
11527 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11528 		public TriggerTargetContext triggerTarget() {
11529 			return getRuleContext(TriggerTargetContext.class,0);
11530 		}
11531 		public CreateTriggerClauseContext createTriggerClause() {
11532 			return getRuleContext(CreateTriggerClauseContext.class,0);
11533 		}
11534 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
11535 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11536 		public CreateTriggerContext(ParserRuleContext parent, int invokingState) {
11537 			super(parent, invokingState);
11538 		}
11539 		@Override public int getRuleIndex() { return RULE_createTrigger; }
11540 		@Override
11541 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11542 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTrigger(this);
11543 			else return visitor.visitChildren(this);
11544 		}
11545 	}
11546 
11547 	public final CreateTriggerContext createTrigger() throws RecognitionException {
11548 		CreateTriggerContext _localctx = new CreateTriggerContext(_ctx, getState());
11549 		enterRule(_localctx, 244, RULE_createTrigger);
11550 		int _la;
11551 		try {
11552 			enterOuterAlt(_localctx, 1);
11553 			{
11554 			setState(1931);
11555 			match(CREATE);
11556 			setState(1934);
11557 			_errHandler.sync(this);
11558 			_la = _input.LA(1);
11559 			if (_la==OR) {
11560 				{
11561 				setState(1932);
11562 				match(OR);
11563 				setState(1933);
11564 				match(ALTER);
11565 				}
11566 			}
11567 
11568 			setState(1936);
11569 			match(TRIGGER);
11570 			setState(1937);
11571 			triggerName();
11572 			setState(1938);
11573 			match(ON);
11574 			setState(1939);
11575 			triggerTarget();
11576 			setState(1940);
11577 			createTriggerClause();
11578 			}
11579 		}
11580 		catch (RecognitionException re) {
11581 			_localctx.exception = re;
11582 			_errHandler.reportError(this, re);
11583 			_errHandler.recover(this, re);
11584 		}
11585 		finally {
11586 			exitRule();
11587 		}
11588 		return _localctx;
11589 	}
11590 
11591 	public static class CreateSequenceContext extends ParserRuleContext {
11592 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11593 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
11594 		public SequenceNameContext sequenceName() {
11595 			return getRuleContext(SequenceNameContext.class,0);
11596 		}
11597 		public List<CreateOrAlterSequenceClauseContext> createOrAlterSequenceClause() {
11598 			return getRuleContexts(CreateOrAlterSequenceClauseContext.class);
11599 		}
11600 		public CreateOrAlterSequenceClauseContext createOrAlterSequenceClause(int i) {
11601 			return getRuleContext(CreateOrAlterSequenceClauseContext.class,i);
11602 		}
11603 		public CreateSequenceContext(ParserRuleContext parent, int invokingState) {
11604 			super(parent, invokingState);
11605 		}
11606 		@Override public int getRuleIndex() { return RULE_createSequence; }
11607 		@Override
11608 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11609 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateSequence(this);
11610 			else return visitor.visitChildren(this);
11611 		}
11612 	}
11613 
11614 	public final CreateSequenceContext createSequence() throws RecognitionException {
11615 		CreateSequenceContext _localctx = new CreateSequenceContext(_ctx, getState());
11616 		enterRule(_localctx, 246, RULE_createSequence);
11617 		int _la;
11618 		try {
11619 			enterOuterAlt(_localctx, 1);
11620 			{
11621 			setState(1942);
11622 			match(CREATE);
11623 			setState(1943);
11624 			match(SEQUENCE);
11625 			setState(1944);
11626 			sequenceName();
11627 			setState(1948);
11628 			_errHandler.sync(this);
11629 			_la = _input.LA(1);
11630 			while (_la==AS || _la==NO || _la==START || ((((_la - 522)) & ~0x3f) == 0 && ((1L << (_la - 522)) & ((1L << (INCREMENT - 522)) | (1L << (CYCLE - 522)) | (1L << (CACHE - 522)) | (1L << (MINVALUE - 522)) | (1L << (MAXVALUE - 522)) | (1L << (RESTART - 522)))) != 0)) {
11631 				{
11632 				{
11633 				setState(1945);
11634 				createOrAlterSequenceClause();
11635 				}
11636 				}
11637 				setState(1950);
11638 				_errHandler.sync(this);
11639 				_la = _input.LA(1);
11640 			}
11641 			}
11642 		}
11643 		catch (RecognitionException re) {
11644 			_localctx.exception = re;
11645 			_errHandler.reportError(this, re);
11646 			_errHandler.recover(this, re);
11647 		}
11648 		finally {
11649 			exitRule();
11650 		}
11651 		return _localctx;
11652 	}
11653 
11654 	public static class CreateServiceContext extends ParserRuleContext {
11655 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11656 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
11657 		public ServiceNameContext serviceName() {
11658 			return getRuleContext(ServiceNameContext.class,0);
11659 		}
11660 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11661 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
11662 		public QueueNameContext queueName() {
11663 			return getRuleContext(QueueNameContext.class,0);
11664 		}
11665 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
11666 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
11667 		public CreateServiceClauseContext createServiceClause() {
11668 			return getRuleContext(CreateServiceClauseContext.class,0);
11669 		}
11670 		public CreateServiceContext(ParserRuleContext parent, int invokingState) {
11671 			super(parent, invokingState);
11672 		}
11673 		@Override public int getRuleIndex() { return RULE_createService; }
11674 		@Override
11675 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11676 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateService(this);
11677 			else return visitor.visitChildren(this);
11678 		}
11679 	}
11680 
11681 	public final CreateServiceContext createService() throws RecognitionException {
11682 		CreateServiceContext _localctx = new CreateServiceContext(_ctx, getState());
11683 		enterRule(_localctx, 248, RULE_createService);
11684 		int _la;
11685 		try {
11686 			enterOuterAlt(_localctx, 1);
11687 			{
11688 			setState(1951);
11689 			match(CREATE);
11690 			setState(1952);
11691 			match(SERVICE);
11692 			setState(1953);
11693 			serviceName();
11694 			setState(1956);
11695 			_errHandler.sync(this);
11696 			_la = _input.LA(1);
11697 			if (_la==AUTHORIZATION) {
11698 				{
11699 				setState(1954);
11700 				match(AUTHORIZATION);
11701 				setState(1955);
11702 				match(STRING_);
11703 				}
11704 			}
11705 
11706 			setState(1958);
11707 			match(ON);
11708 			setState(1959);
11709 			match(QUEUE);
11710 			setState(1960);
11711 			queueName();
11712 			setState(1962);
11713 			_errHandler.sync(this);
11714 			_la = _input.LA(1);
11715 			if (_la==LP_) {
11716 				{
11717 				setState(1961);
11718 				createServiceClause();
11719 				}
11720 			}
11721 
11722 			}
11723 		}
11724 		catch (RecognitionException re) {
11725 			_localctx.exception = re;
11726 			_errHandler.reportError(this, re);
11727 			_errHandler.recover(this, re);
11728 		}
11729 		finally {
11730 			exitRule();
11731 		}
11732 		return _localctx;
11733 	}
11734 
11735 	public static class CreateSchemaContext extends ParserRuleContext {
11736 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
11737 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
11738 		public SchemaNameClauseContext schemaNameClause() {
11739 			return getRuleContext(SchemaNameClauseContext.class,0);
11740 		}
11741 		public List<SchemaElementContext> schemaElement() {
11742 			return getRuleContexts(SchemaElementContext.class);
11743 		}
11744 		public SchemaElementContext schemaElement(int i) {
11745 			return getRuleContext(SchemaElementContext.class,i);
11746 		}
11747 		public CreateSchemaContext(ParserRuleContext parent, int invokingState) {
11748 			super(parent, invokingState);
11749 		}
11750 		@Override public int getRuleIndex() { return RULE_createSchema; }
11751 		@Override
11752 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11753 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateSchema(this);
11754 			else return visitor.visitChildren(this);
11755 		}
11756 	}
11757 
11758 	public final CreateSchemaContext createSchema() throws RecognitionException {
11759 		CreateSchemaContext _localctx = new CreateSchemaContext(_ctx, getState());
11760 		enterRule(_localctx, 250, RULE_createSchema);
11761 		int _la;
11762 		try {
11763 			enterOuterAlt(_localctx, 1);
11764 			{
11765 			setState(1964);
11766 			match(CREATE);
11767 			setState(1965);
11768 			match(SCHEMA);
11769 			setState(1966);
11770 			schemaNameClause();
11771 			setState(1970);
11772 			_errHandler.sync(this);
11773 			_la = _input.LA(1);
11774 			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CREATE) | (1L << GRANT) | (1L << REVOKE))) != 0) || _la==DENY) {
11775 				{
11776 				{
11777 				setState(1967);
11778 				schemaElement();
11779 				}
11780 				}
11781 				setState(1972);
11782 				_errHandler.sync(this);
11783 				_la = _input.LA(1);
11784 			}
11785 			}
11786 		}
11787 		catch (RecognitionException re) {
11788 			_localctx.exception = re;
11789 			_errHandler.reportError(this, re);
11790 			_errHandler.recover(this, re);
11791 		}
11792 		finally {
11793 			exitRule();
11794 		}
11795 		return _localctx;
11796 	}
11797 
11798 	public static class AlterTableContext extends ParserRuleContext {
11799 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11800 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
11801 		public TableNameContext tableName() {
11802 			return getRuleContext(TableNameContext.class,0);
11803 		}
11804 		public List<AlterDefinitionClauseContext> alterDefinitionClause() {
11805 			return getRuleContexts(AlterDefinitionClauseContext.class);
11806 		}
11807 		public AlterDefinitionClauseContext alterDefinitionClause(int i) {
11808 			return getRuleContext(AlterDefinitionClauseContext.class,i);
11809 		}
11810 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
11811 		public TerminalNode COMMA_(int i) {
11812 			return getToken(SQLServerStatementParser.COMMA_, i);
11813 		}
11814 		public AlterTableContext(ParserRuleContext parent, int invokingState) {
11815 			super(parent, invokingState);
11816 		}
11817 		@Override public int getRuleIndex() { return RULE_alterTable; }
11818 		@Override
11819 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11820 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTable(this);
11821 			else return visitor.visitChildren(this);
11822 		}
11823 	}
11824 
11825 	public final AlterTableContext alterTable() throws RecognitionException {
11826 		AlterTableContext _localctx = new AlterTableContext(_ctx, getState());
11827 		enterRule(_localctx, 252, RULE_alterTable);
11828 		int _la;
11829 		try {
11830 			enterOuterAlt(_localctx, 1);
11831 			{
11832 			setState(1973);
11833 			match(ALTER);
11834 			setState(1974);
11835 			match(TABLE);
11836 			setState(1975);
11837 			tableName();
11838 			setState(1976);
11839 			alterDefinitionClause();
11840 			setState(1981);
11841 			_errHandler.sync(this);
11842 			_la = _input.LA(1);
11843 			while (_la==COMMA_) {
11844 				{
11845 				{
11846 				setState(1977);
11847 				match(COMMA_);
11848 				setState(1978);
11849 				alterDefinitionClause();
11850 				}
11851 				}
11852 				setState(1983);
11853 				_errHandler.sync(this);
11854 				_la = _input.LA(1);
11855 			}
11856 			}
11857 		}
11858 		catch (RecognitionException re) {
11859 			_localctx.exception = re;
11860 			_errHandler.reportError(this, re);
11861 			_errHandler.recover(this, re);
11862 		}
11863 		finally {
11864 			exitRule();
11865 		}
11866 		return _localctx;
11867 	}
11868 
11869 	public static class AlterIndexContext extends ParserRuleContext {
11870 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
11871 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
11872 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11873 		public TableNameContext tableName() {
11874 			return getRuleContext(TableNameContext.class,0);
11875 		}
11876 		public AlterIndexClauseContext alterIndexClause() {
11877 			return getRuleContext(AlterIndexClauseContext.class,0);
11878 		}
11879 		public IndexNameContext indexName() {
11880 			return getRuleContext(IndexNameContext.class,0);
11881 		}
11882 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
11883 		public AlterIndexContext(ParserRuleContext parent, int invokingState) {
11884 			super(parent, invokingState);
11885 		}
11886 		@Override public int getRuleIndex() { return RULE_alterIndex; }
11887 		@Override
11888 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11889 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterIndex(this);
11890 			else return visitor.visitChildren(this);
11891 		}
11892 	}
11893 
11894 	public final AlterIndexContext alterIndex() throws RecognitionException {
11895 		AlterIndexContext _localctx = new AlterIndexContext(_ctx, getState());
11896 		enterRule(_localctx, 254, RULE_alterIndex);
11897 		try {
11898 			enterOuterAlt(_localctx, 1);
11899 			{
11900 			setState(1984);
11901 			match(ALTER);
11902 			setState(1985);
11903 			match(INDEX);
11904 			setState(1988);
11905 			_errHandler.sync(this);
11906 			switch (_input.LA(1)) {
11907 			case TRUNCATE:
11908 			case SCHEMA:
11909 			case FUNCTION:
11910 			case TRIGGER:
11911 			case CAST:
11912 			case GROUP:
11913 			case LIMIT:
11914 			case OFFSET:
11915 			case SAVEPOINT:
11916 			case BOOLEAN:
11917 			case ARRAY:
11918 			case DATE:
11919 			case LOCALTIME:
11920 			case LOCALTIMESTAMP:
11921 			case QUARTER:
11922 			case WEEK:
11923 			case DAY:
11924 			case MICROSECOND:
11925 			case MAX:
11926 			case MIN:
11927 			case SUM:
11928 			case COUNT:
11929 			case AVG:
11930 			case ENABLE:
11931 			case DISABLE:
11932 			case INSTANCE:
11933 			case DO:
11934 			case DEFINER:
11935 			case SQL:
11936 			case CASCADED:
11937 			case LOCAL:
11938 			case NEXT:
11939 			case NAME:
11940 			case INTEGER:
11941 			case TYPE:
11942 			case READ_ONLY:
11943 			case DATABASE:
11944 			case DATEPART:
11945 			case PASSWORD:
11946 			case BINARY:
11947 			case HIDDEN_:
11948 			case MOD:
11949 			case PARTITION:
11950 			case PARTITIONS:
11951 			case TOP:
11952 			case ROW:
11953 			case ROWS:
11954 			case XOR:
11955 			case ALWAYS:
11956 			case ROLE:
11957 			case START:
11958 			case ALGORITHM:
11959 			case AUTO:
11960 			case BLOCKERS:
11961 			case CLUSTERED:
11962 			case NONCLUSTERED:
11963 			case COLUMNSTORE:
11964 			case CONTENT:
11965 			case YEARS:
11966 			case MONTHS:
11967 			case WEEKS:
11968 			case DAYS:
11969 			case MINUTES:
11970 			case DENY:
11971 			case DETERMINISTIC:
11972 			case DISTRIBUTION:
11973 			case DOCUMENT:
11974 			case DURABILITY:
11975 			case ENCRYPTED:
11976 			case FILESTREAM:
11977 			case FILETABLE:
11978 			case FILLFACTOR:
11979 			case FOLLOWING:
11980 			case HASH:
11981 			case HEAP:
11982 			case INBOUND:
11983 			case OUTBOUND:
11984 			case UNBOUNDED:
11985 			case INFINITE:
11986 			case LOGIN:
11987 			case MASKED:
11988 			case MAXDOP:
11989 			case MOVE:
11990 			case NOCHECK:
11991 			case OBJECT:
11992 			case OFF:
11993 			case ONLINE:
11994 			case OVER:
11995 			case PAGE:
11996 			case PAUSED:
11997 			case PERIOD:
11998 			case PERSISTED:
11999 			case PRECEDING:
12000 			case RANDOMIZED:
12001 			case RANGE:
12002 			case REBUILD:
12003 			case REPLICATE:
12004 			case REPLICATION:
12005 			case RESUMABLE:
12006 			case ROWGUIDCOL:
12007 			case SAVE:
12008 			case SELF:
12009 			case SPARSE:
12010 			case SWITCH:
12011 			case TRAN:
12012 			case TRANCOUNT:
12013 			case CONTROL:
12014 			case CONCAT:
12015 			case TAKE:
12016 			case OWNERSHIP:
12017 			case DEFINITION:
12018 			case APPLICATION:
12019 			case ASSEMBLY:
12020 			case SYMMETRIC:
12021 			case ASYMMETRIC:
12022 			case SERVER:
12023 			case RECEIVE:
12024 			case CHANGE:
12025 			case TRACE:
12026 			case TRACKING:
12027 			case RESOURCES:
12028 			case SETTINGS:
12029 			case STATE:
12030 			case AVAILABILITY:
12031 			case CREDENTIAL:
12032 			case ENDPOINT:
12033 			case EVENT:
12034 			case NOTIFICATION:
12035 			case LINKED:
12036 			case AUDIT:
12037 			case DDL:
12038 			case XML:
12039 			case IMPERSONATE:
12040 			case SECURABLES:
12041 			case AUTHENTICATE:
12042 			case EXTERNAL:
12043 			case ACCESS:
12044 			case ADMINISTER:
12045 			case BULK:
12046 			case OPERATIONS:
12047 			case UNSAFE:
12048 			case SHUTDOWN:
12049 			case SCOPED:
12050 			case CONFIGURATION:
12051 			case DATASPACE:
12052 			case SERVICE:
12053 			case CERTIFICATE:
12054 			case CONTRACT:
12055 			case ENCRYPTION:
12056 			case MASTER:
12057 			case DATA:
12058 			case SOURCE:
12059 			case FILE:
12060 			case FORMAT:
12061 			case LIBRARY:
12062 			case FULLTEXT:
12063 			case MASK:
12064 			case UNMASK:
12065 			case MESSAGE:
12066 			case REMOTE:
12067 			case BINDING:
12068 			case ROUTE:
12069 			case SECURITY:
12070 			case POLICY:
12071 			case AGGREGATE:
12072 			case QUEUE:
12073 			case RULE:
12074 			case SYNONYM:
12075 			case COLLECTION:
12076 			case SCRIPT:
12077 			case KILL:
12078 			case BACKUP:
12079 			case LOG:
12080 			case SHOWPLAN:
12081 			case SUBSCRIBE:
12082 			case QUERY:
12083 			case NOTIFICATIONS:
12084 			case CHECKPOINT:
12085 			case SEQUENCE:
12086 			case ABORT_AFTER_WAIT:
12087 			case ALLOW_PAGE_LOCKS:
12088 			case ALLOW_ROW_LOCKS:
12089 			case ALL_SPARSE_COLUMNS:
12090 			case BUCKET_COUNT:
12091 			case COLUMNSTORE_ARCHIVE:
12092 			case COLUMN_ENCRYPTION_KEY:
12093 			case COLUMN_SET:
12094 			case COMPRESSION_DELAY:
12095 			case DATABASE_DEAULT:
12096 			case DATA_COMPRESSION:
12097 			case DATA_CONSISTENCY_CHECK:
12098 			case ENCRYPTION_TYPE:
12099 			case SYSTEM_TIME:
12100 			case SYSTEM_VERSIONING:
12101 			case TEXTIMAGE_ON:
12102 			case WAIT_AT_LOW_PRIORITY:
12103 			case STATISTICS_INCREMENTAL:
12104 			case STATISTICS_NORECOMPUTE:
12105 			case ROUND_ROBIN:
12106 			case SCHEMA_AND_DATA:
12107 			case SCHEMA_ONLY:
12108 			case SORT_IN_TEMPDB:
12109 			case IGNORE_DUP_KEY:
12110 			case IMPLICIT_TRANSACTIONS:
12111 			case MAX_DURATION:
12112 			case MEMORY_OPTIMIZED:
12113 			case MIGRATION_STATE:
12114 			case PAD_INDEX:
12115 			case REMOTE_DATA_ARCHIVE:
12116 			case FILESTREAM_ON:
12117 			case FILETABLE_COLLATE_FILENAME:
12118 			case FILETABLE_DIRECTORY:
12119 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
12120 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
12121 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
12122 			case FILTER_PREDICATE:
12123 			case HISTORY_RETENTION_PERIOD:
12124 			case HISTORY_TABLE:
12125 			case LOCK_ESCALATION:
12126 			case DROP_EXISTING:
12127 			case ROW_NUMBER:
12128 			case FIRST:
12129 			case DATETIME2:
12130 			case OUTPUT:
12131 			case INSERTED:
12132 			case DELETED:
12133 			case FILENAME:
12134 			case MAXSIZE:
12135 			case FILEGROWTH:
12136 			case UNLIMITED:
12137 			case KB:
12138 			case MB:
12139 			case GB:
12140 			case TB:
12141 			case MEMORY_OPTIMIZED_DATA:
12142 			case FILEGROUP:
12143 			case NON_TRANSACTED_ACCESS:
12144 			case DB_CHAINING:
12145 			case TRUSTWORTHY:
12146 			case FORWARD_ONLY:
12147 			case KEYSET:
12148 			case FAST_FORWARD:
12149 			case SCROLL_LOCKS:
12150 			case OPTIMISTIC:
12151 			case TYPE_WARNING:
12152 			case SCHEMABINDING:
12153 			case CALLER:
12154 			case OWNER:
12155 			case SNAPSHOT:
12156 			case REPEATABLE:
12157 			case SERIALIZABLE:
12158 			case NATIVE_COMPILATION:
12159 			case VIEW_METADATA:
12160 			case INSTEAD:
12161 			case APPEND:
12162 			case INCREMENT:
12163 			case CACHE:
12164 			case MINVALUE:
12165 			case MAXVALUE:
12166 			case RESTART:
12167 			case LOB_COMPACTION:
12168 			case COMPRESS_ALL_ROW_GROUPS:
12169 			case REORGANIZE:
12170 			case RESUME:
12171 			case PAUSE:
12172 			case ABORT:
12173 			case ACCELERATED_DATABASE_RECOVERY:
12174 			case PERSISTENT_VERSION_STORE_FILEGROUP:
12175 			case IMMEDIATE:
12176 			case NO_WAIT:
12177 			case TARGET_RECOVERY_TIME:
12178 			case SECONDS:
12179 			case HONOR_BROKER_PRIORITY:
12180 			case ERROR_BROKER_CONVERSATIONS:
12181 			case NEW_BROKER:
12182 			case DISABLE_BROKER:
12183 			case ENABLE_BROKER:
12184 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
12185 			case READ_COMMITTED_SNAPSHOT:
12186 			case ALLOW_SNAPSHOT_ISOLATION:
12187 			case RECURSIVE_TRIGGERS:
12188 			case QUOTED_IDENTIFIER:
12189 			case NUMERIC_ROUNDABORT:
12190 			case CONCAT_NULL_YIELDS_NULL:
12191 			case COMPATIBILITY_LEVEL:
12192 			case ARITHABORT:
12193 			case ANSI_WARNINGS:
12194 			case ANSI_PADDING:
12195 			case ANSI_NULLS:
12196 			case ANSI_NULL_DEFAULT:
12197 			case PAGE_VERIFY:
12198 			case CHECKSUM:
12199 			case TORN_PAGE_DETECTION:
12200 			case BULK_LOGGED:
12201 			case RECOVERY:
12202 			case TOTAL_EXECUTION_CPU_TIME_MS:
12203 			case TOTAL_COMPILE_CPU_TIME_MS:
12204 			case STALE_CAPTURE_POLICY_THRESHOLD:
12205 			case EXECUTION_COUNT:
12206 			case QUERY_CAPTURE_POLICY:
12207 			case WAIT_STATS_CAPTURE_MODE:
12208 			case MAX_PLANS_PER_QUERY:
12209 			case QUERY_CAPTURE_MODE:
12210 			case SIZE_BASED_CLEANUP_MODE:
12211 			case INTERVAL_LENGTH_MINUTES:
12212 			case MAX_STORAGE_SIZE_MB:
12213 			case DATA_FLUSH_INTERVAL_SECONDS:
12214 			case CLEANUP_POLICY:
12215 			case CUSTOM:
12216 			case STALE_QUERY_THRESHOLD_DAYS:
12217 			case OPERATION_MODE:
12218 			case QUERY_STORE:
12219 			case CURSOR_DEFAULT:
12220 			case GLOBAL:
12221 			case CURSOR_CLOSE_ON_COMMIT:
12222 			case HOURS:
12223 			case CHANGE_RETENTION:
12224 			case AUTO_CLEANUP:
12225 			case CHANGE_TRACKING:
12226 			case AUTOMATIC_TUNING:
12227 			case FORCE_LAST_GOOD_PLAN:
12228 			case AUTO_UPDATE_STATISTICS_ASYNC:
12229 			case AUTO_UPDATE_STATISTICS:
12230 			case AUTO_SHRINK:
12231 			case AUTO_CREATE_STATISTICS:
12232 			case INCREMENTAL:
12233 			case AUTO_CLOSE:
12234 			case DATA_RETENTION:
12235 			case TEMPORAL_HISTORY_RETENTION:
12236 			case EDITION:
12237 			case MIXED_PAGE_ALLOCATION:
12238 			case DISABLED:
12239 			case ALLOWED:
12240 			case HADR:
12241 			case MULTI_USER:
12242 			case RESTRICTED_USER:
12243 			case SINGLE_USER:
12244 			case OFFLINE:
12245 			case EMERGENCY:
12246 			case SUSPEND:
12247 			case DATE_CORRELATION_OPTIMIZATION:
12248 			case ELASTIC_POOL:
12249 			case SERVICE_OBJECTIVE:
12250 			case DATABASE_NAME:
12251 			case ALLOW_CONNECTIONS:
12252 			case GEO:
12253 			case NAMED:
12254 			case DATEFIRST:
12255 			case BACKUP_STORAGE_REDUNDANCY:
12256 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
12257 			case SECONDARY:
12258 			case FAILOVER:
12259 			case DEFAULT_FULLTEXT_LANGUAGE:
12260 			case DEFAULT_LANGUAGE:
12261 			case INLINE:
12262 			case NESTED_TRIGGERS:
12263 			case TRANSFORM_NOISE_WORDS:
12264 			case TWO_DIGIT_YEAR_CUTOFF:
12265 			case PERSISTENT_LOG_BUFFER:
12266 			case DIRECTORY_NAME:
12267 			case DATEFORMAT:
12268 			case DELAYED_DURABILITY:
12269 			case AUTHORIZATION:
12270 			case TRANSFER:
12271 			case SEARCH:
12272 			case MEMBER:
12273 			case IDENTIFIER_:
12274 			case DELIMITED_IDENTIFIER_:
12275 				{
12276 				setState(1986);
12277 				indexName();
12278 				}
12279 				break;
12280 			case ALL:
12281 				{
12282 				setState(1987);
12283 				match(ALL);
12284 				}
12285 				break;
12286 			default:
12287 				throw new NoViableAltException(this);
12288 			}
12289 			setState(1990);
12290 			match(ON);
12291 			setState(1991);
12292 			tableName();
12293 			setState(1992);
12294 			alterIndexClause();
12295 			}
12296 		}
12297 		catch (RecognitionException re) {
12298 			_localctx.exception = re;
12299 			_errHandler.reportError(this, re);
12300 			_errHandler.recover(this, re);
12301 		}
12302 		finally {
12303 			exitRule();
12304 		}
12305 		return _localctx;
12306 	}
12307 
12308 	public static class AlterDatabaseContext extends ParserRuleContext {
12309 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12310 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
12311 		public DatabaseNameContext databaseName() {
12312 			return getRuleContext(DatabaseNameContext.class,0);
12313 		}
12314 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
12315 		public List<AlterDatabaseClauseContext> alterDatabaseClause() {
12316 			return getRuleContexts(AlterDatabaseClauseContext.class);
12317 		}
12318 		public AlterDatabaseClauseContext alterDatabaseClause(int i) {
12319 			return getRuleContext(AlterDatabaseClauseContext.class,i);
12320 		}
12321 		public AlterDatabaseContext(ParserRuleContext parent, int invokingState) {
12322 			super(parent, invokingState);
12323 		}
12324 		@Override public int getRuleIndex() { return RULE_alterDatabase; }
12325 		@Override
12326 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12327 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabase(this);
12328 			else return visitor.visitChildren(this);
12329 		}
12330 	}
12331 
12332 	public final AlterDatabaseContext alterDatabase() throws RecognitionException {
12333 		AlterDatabaseContext _localctx = new AlterDatabaseContext(_ctx, getState());
12334 		enterRule(_localctx, 256, RULE_alterDatabase);
12335 		int _la;
12336 		try {
12337 			enterOuterAlt(_localctx, 1);
12338 			{
12339 			setState(1994);
12340 			match(ALTER);
12341 			setState(1995);
12342 			match(DATABASE);
12343 			setState(1998);
12344 			_errHandler.sync(this);
12345 			switch (_input.LA(1)) {
12346 			case TRUNCATE:
12347 			case SCHEMA:
12348 			case FUNCTION:
12349 			case TRIGGER:
12350 			case CAST:
12351 			case GROUP:
12352 			case LIMIT:
12353 			case OFFSET:
12354 			case SAVEPOINT:
12355 			case BOOLEAN:
12356 			case ARRAY:
12357 			case DATE:
12358 			case LOCALTIME:
12359 			case LOCALTIMESTAMP:
12360 			case QUARTER:
12361 			case WEEK:
12362 			case DAY:
12363 			case MICROSECOND:
12364 			case MAX:
12365 			case MIN:
12366 			case SUM:
12367 			case COUNT:
12368 			case AVG:
12369 			case ENABLE:
12370 			case DISABLE:
12371 			case INSTANCE:
12372 			case DO:
12373 			case DEFINER:
12374 			case SQL:
12375 			case CASCADED:
12376 			case LOCAL:
12377 			case NEXT:
12378 			case NAME:
12379 			case INTEGER:
12380 			case TYPE:
12381 			case READ_ONLY:
12382 			case DATABASE:
12383 			case DATEPART:
12384 			case PASSWORD:
12385 			case BINARY:
12386 			case HIDDEN_:
12387 			case MOD:
12388 			case PARTITION:
12389 			case PARTITIONS:
12390 			case TOP:
12391 			case ROW:
12392 			case ROWS:
12393 			case XOR:
12394 			case ALWAYS:
12395 			case ROLE:
12396 			case START:
12397 			case ALGORITHM:
12398 			case AUTO:
12399 			case BLOCKERS:
12400 			case CLUSTERED:
12401 			case NONCLUSTERED:
12402 			case COLUMNSTORE:
12403 			case CONTENT:
12404 			case YEARS:
12405 			case MONTHS:
12406 			case WEEKS:
12407 			case DAYS:
12408 			case MINUTES:
12409 			case DENY:
12410 			case DETERMINISTIC:
12411 			case DISTRIBUTION:
12412 			case DOCUMENT:
12413 			case DURABILITY:
12414 			case ENCRYPTED:
12415 			case FILESTREAM:
12416 			case FILETABLE:
12417 			case FILLFACTOR:
12418 			case FOLLOWING:
12419 			case HASH:
12420 			case HEAP:
12421 			case INBOUND:
12422 			case OUTBOUND:
12423 			case UNBOUNDED:
12424 			case INFINITE:
12425 			case LOGIN:
12426 			case MASKED:
12427 			case MAXDOP:
12428 			case MOVE:
12429 			case NOCHECK:
12430 			case OBJECT:
12431 			case OFF:
12432 			case ONLINE:
12433 			case OVER:
12434 			case PAGE:
12435 			case PAUSED:
12436 			case PERIOD:
12437 			case PERSISTED:
12438 			case PRECEDING:
12439 			case RANDOMIZED:
12440 			case RANGE:
12441 			case REBUILD:
12442 			case REPLICATE:
12443 			case REPLICATION:
12444 			case RESUMABLE:
12445 			case ROWGUIDCOL:
12446 			case SAVE:
12447 			case SELF:
12448 			case SPARSE:
12449 			case SWITCH:
12450 			case TRAN:
12451 			case TRANCOUNT:
12452 			case CONTROL:
12453 			case CONCAT:
12454 			case TAKE:
12455 			case OWNERSHIP:
12456 			case DEFINITION:
12457 			case APPLICATION:
12458 			case ASSEMBLY:
12459 			case SYMMETRIC:
12460 			case ASYMMETRIC:
12461 			case SERVER:
12462 			case RECEIVE:
12463 			case CHANGE:
12464 			case TRACE:
12465 			case TRACKING:
12466 			case RESOURCES:
12467 			case SETTINGS:
12468 			case STATE:
12469 			case AVAILABILITY:
12470 			case CREDENTIAL:
12471 			case ENDPOINT:
12472 			case EVENT:
12473 			case NOTIFICATION:
12474 			case LINKED:
12475 			case AUDIT:
12476 			case DDL:
12477 			case XML:
12478 			case IMPERSONATE:
12479 			case SECURABLES:
12480 			case AUTHENTICATE:
12481 			case EXTERNAL:
12482 			case ACCESS:
12483 			case ADMINISTER:
12484 			case BULK:
12485 			case OPERATIONS:
12486 			case UNSAFE:
12487 			case SHUTDOWN:
12488 			case SCOPED:
12489 			case CONFIGURATION:
12490 			case DATASPACE:
12491 			case SERVICE:
12492 			case CERTIFICATE:
12493 			case CONTRACT:
12494 			case ENCRYPTION:
12495 			case MASTER:
12496 			case DATA:
12497 			case SOURCE:
12498 			case FILE:
12499 			case FORMAT:
12500 			case LIBRARY:
12501 			case FULLTEXT:
12502 			case MASK:
12503 			case UNMASK:
12504 			case MESSAGE:
12505 			case REMOTE:
12506 			case BINDING:
12507 			case ROUTE:
12508 			case SECURITY:
12509 			case POLICY:
12510 			case AGGREGATE:
12511 			case QUEUE:
12512 			case RULE:
12513 			case SYNONYM:
12514 			case COLLECTION:
12515 			case SCRIPT:
12516 			case KILL:
12517 			case BACKUP:
12518 			case LOG:
12519 			case SHOWPLAN:
12520 			case SUBSCRIBE:
12521 			case QUERY:
12522 			case NOTIFICATIONS:
12523 			case CHECKPOINT:
12524 			case SEQUENCE:
12525 			case ABORT_AFTER_WAIT:
12526 			case ALLOW_PAGE_LOCKS:
12527 			case ALLOW_ROW_LOCKS:
12528 			case ALL_SPARSE_COLUMNS:
12529 			case BUCKET_COUNT:
12530 			case COLUMNSTORE_ARCHIVE:
12531 			case COLUMN_ENCRYPTION_KEY:
12532 			case COLUMN_SET:
12533 			case COMPRESSION_DELAY:
12534 			case DATABASE_DEAULT:
12535 			case DATA_COMPRESSION:
12536 			case DATA_CONSISTENCY_CHECK:
12537 			case ENCRYPTION_TYPE:
12538 			case SYSTEM_TIME:
12539 			case SYSTEM_VERSIONING:
12540 			case TEXTIMAGE_ON:
12541 			case WAIT_AT_LOW_PRIORITY:
12542 			case STATISTICS_INCREMENTAL:
12543 			case STATISTICS_NORECOMPUTE:
12544 			case ROUND_ROBIN:
12545 			case SCHEMA_AND_DATA:
12546 			case SCHEMA_ONLY:
12547 			case SORT_IN_TEMPDB:
12548 			case IGNORE_DUP_KEY:
12549 			case IMPLICIT_TRANSACTIONS:
12550 			case MAX_DURATION:
12551 			case MEMORY_OPTIMIZED:
12552 			case MIGRATION_STATE:
12553 			case PAD_INDEX:
12554 			case REMOTE_DATA_ARCHIVE:
12555 			case FILESTREAM_ON:
12556 			case FILETABLE_COLLATE_FILENAME:
12557 			case FILETABLE_DIRECTORY:
12558 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
12559 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
12560 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
12561 			case FILTER_PREDICATE:
12562 			case HISTORY_RETENTION_PERIOD:
12563 			case HISTORY_TABLE:
12564 			case LOCK_ESCALATION:
12565 			case DROP_EXISTING:
12566 			case ROW_NUMBER:
12567 			case FIRST:
12568 			case DATETIME2:
12569 			case OUTPUT:
12570 			case INSERTED:
12571 			case DELETED:
12572 			case FILENAME:
12573 			case MAXSIZE:
12574 			case FILEGROWTH:
12575 			case UNLIMITED:
12576 			case KB:
12577 			case MB:
12578 			case GB:
12579 			case TB:
12580 			case MEMORY_OPTIMIZED_DATA:
12581 			case FILEGROUP:
12582 			case NON_TRANSACTED_ACCESS:
12583 			case DB_CHAINING:
12584 			case TRUSTWORTHY:
12585 			case FORWARD_ONLY:
12586 			case KEYSET:
12587 			case FAST_FORWARD:
12588 			case SCROLL_LOCKS:
12589 			case OPTIMISTIC:
12590 			case TYPE_WARNING:
12591 			case SCHEMABINDING:
12592 			case CALLER:
12593 			case OWNER:
12594 			case SNAPSHOT:
12595 			case REPEATABLE:
12596 			case SERIALIZABLE:
12597 			case NATIVE_COMPILATION:
12598 			case VIEW_METADATA:
12599 			case INSTEAD:
12600 			case APPEND:
12601 			case INCREMENT:
12602 			case CACHE:
12603 			case MINVALUE:
12604 			case MAXVALUE:
12605 			case RESTART:
12606 			case LOB_COMPACTION:
12607 			case COMPRESS_ALL_ROW_GROUPS:
12608 			case REORGANIZE:
12609 			case RESUME:
12610 			case PAUSE:
12611 			case ABORT:
12612 			case ACCELERATED_DATABASE_RECOVERY:
12613 			case PERSISTENT_VERSION_STORE_FILEGROUP:
12614 			case IMMEDIATE:
12615 			case NO_WAIT:
12616 			case TARGET_RECOVERY_TIME:
12617 			case SECONDS:
12618 			case HONOR_BROKER_PRIORITY:
12619 			case ERROR_BROKER_CONVERSATIONS:
12620 			case NEW_BROKER:
12621 			case DISABLE_BROKER:
12622 			case ENABLE_BROKER:
12623 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
12624 			case READ_COMMITTED_SNAPSHOT:
12625 			case ALLOW_SNAPSHOT_ISOLATION:
12626 			case RECURSIVE_TRIGGERS:
12627 			case QUOTED_IDENTIFIER:
12628 			case NUMERIC_ROUNDABORT:
12629 			case CONCAT_NULL_YIELDS_NULL:
12630 			case COMPATIBILITY_LEVEL:
12631 			case ARITHABORT:
12632 			case ANSI_WARNINGS:
12633 			case ANSI_PADDING:
12634 			case ANSI_NULLS:
12635 			case ANSI_NULL_DEFAULT:
12636 			case PAGE_VERIFY:
12637 			case CHECKSUM:
12638 			case TORN_PAGE_DETECTION:
12639 			case BULK_LOGGED:
12640 			case RECOVERY:
12641 			case TOTAL_EXECUTION_CPU_TIME_MS:
12642 			case TOTAL_COMPILE_CPU_TIME_MS:
12643 			case STALE_CAPTURE_POLICY_THRESHOLD:
12644 			case EXECUTION_COUNT:
12645 			case QUERY_CAPTURE_POLICY:
12646 			case WAIT_STATS_CAPTURE_MODE:
12647 			case MAX_PLANS_PER_QUERY:
12648 			case QUERY_CAPTURE_MODE:
12649 			case SIZE_BASED_CLEANUP_MODE:
12650 			case INTERVAL_LENGTH_MINUTES:
12651 			case MAX_STORAGE_SIZE_MB:
12652 			case DATA_FLUSH_INTERVAL_SECONDS:
12653 			case CLEANUP_POLICY:
12654 			case CUSTOM:
12655 			case STALE_QUERY_THRESHOLD_DAYS:
12656 			case OPERATION_MODE:
12657 			case QUERY_STORE:
12658 			case CURSOR_DEFAULT:
12659 			case GLOBAL:
12660 			case CURSOR_CLOSE_ON_COMMIT:
12661 			case HOURS:
12662 			case CHANGE_RETENTION:
12663 			case AUTO_CLEANUP:
12664 			case CHANGE_TRACKING:
12665 			case AUTOMATIC_TUNING:
12666 			case FORCE_LAST_GOOD_PLAN:
12667 			case AUTO_UPDATE_STATISTICS_ASYNC:
12668 			case AUTO_UPDATE_STATISTICS:
12669 			case AUTO_SHRINK:
12670 			case AUTO_CREATE_STATISTICS:
12671 			case INCREMENTAL:
12672 			case AUTO_CLOSE:
12673 			case DATA_RETENTION:
12674 			case TEMPORAL_HISTORY_RETENTION:
12675 			case EDITION:
12676 			case MIXED_PAGE_ALLOCATION:
12677 			case DISABLED:
12678 			case ALLOWED:
12679 			case HADR:
12680 			case MULTI_USER:
12681 			case RESTRICTED_USER:
12682 			case SINGLE_USER:
12683 			case OFFLINE:
12684 			case EMERGENCY:
12685 			case SUSPEND:
12686 			case DATE_CORRELATION_OPTIMIZATION:
12687 			case ELASTIC_POOL:
12688 			case SERVICE_OBJECTIVE:
12689 			case DATABASE_NAME:
12690 			case ALLOW_CONNECTIONS:
12691 			case GEO:
12692 			case NAMED:
12693 			case DATEFIRST:
12694 			case BACKUP_STORAGE_REDUNDANCY:
12695 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
12696 			case SECONDARY:
12697 			case FAILOVER:
12698 			case DEFAULT_FULLTEXT_LANGUAGE:
12699 			case DEFAULT_LANGUAGE:
12700 			case INLINE:
12701 			case NESTED_TRIGGERS:
12702 			case TRANSFORM_NOISE_WORDS:
12703 			case TWO_DIGIT_YEAR_CUTOFF:
12704 			case PERSISTENT_LOG_BUFFER:
12705 			case DIRECTORY_NAME:
12706 			case DATEFORMAT:
12707 			case DELAYED_DURABILITY:
12708 			case AUTHORIZATION:
12709 			case TRANSFER:
12710 			case SEARCH:
12711 			case MEMBER:
12712 			case IDENTIFIER_:
12713 			case DELIMITED_IDENTIFIER_:
12714 				{
12715 				setState(1996);
12716 				databaseName();
12717 				}
12718 				break;
12719 			case CURRENT:
12720 				{
12721 				setState(1997);
12722 				match(CURRENT);
12723 				}
12724 				break;
12725 			default:
12726 				throw new NoViableAltException(this);
12727 			}
12728 			setState(2003);
12729 			_errHandler.sync(this);
12730 			_la = _input.LA(1);
12731 			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LP_) | (1L << ADD) | (1L << SET))) != 0) || ((((_la - 152)) & ~0x3f) == 0 && ((1L << (_la - 152)) & ((1L << (DEFAULT - 152)) | (1L << (NAME - 152)) | (1L << (READ_ONLY - 152)) | (1L << (READONLY - 152)))) != 0) || _la==COLLATE || ((((_la - 538)) & ~0x3f) == 0 && ((1L << (_la - 538)) & ((1L << (REMOVE - 538)) | (1L << (AUTOGROW_SINGLE_FILE - 538)) | (1L << (AUTOGROW_ALL_FILES - 538)) | (1L << (READWRITE - 538)) | (1L << (READ_WRITE - 538)) | (1L << (MODIFY - 538)))) != 0) || _la==FORCE_FAILOVER_ALLOW_DATA_LOSS || _la==FAILOVER) {
12732 				{
12733 				{
12734 				setState(2000);
12735 				alterDatabaseClause();
12736 				}
12737 				}
12738 				setState(2005);
12739 				_errHandler.sync(this);
12740 				_la = _input.LA(1);
12741 			}
12742 			}
12743 		}
12744 		catch (RecognitionException re) {
12745 			_localctx.exception = re;
12746 			_errHandler.reportError(this, re);
12747 			_errHandler.recover(this, re);
12748 		}
12749 		finally {
12750 			exitRule();
12751 		}
12752 		return _localctx;
12753 	}
12754 
12755 	public static class AlterProcedureContext extends ParserRuleContext {
12756 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12757 		public ProcedureNameContext procedureName() {
12758 			return getRuleContext(ProcedureNameContext.class,0);
12759 		}
12760 		public ProcParametersContext procParameters() {
12761 			return getRuleContext(ProcParametersContext.class,0);
12762 		}
12763 		public CreateOrAlterProcClauseContext createOrAlterProcClause() {
12764 			return getRuleContext(CreateOrAlterProcClauseContext.class,0);
12765 		}
12766 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
12767 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
12768 		public AlterProcedureContext(ParserRuleContext parent, int invokingState) {
12769 			super(parent, invokingState);
12770 		}
12771 		@Override public int getRuleIndex() { return RULE_alterProcedure; }
12772 		@Override
12773 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12774 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterProcedure(this);
12775 			else return visitor.visitChildren(this);
12776 		}
12777 	}
12778 
12779 	public final AlterProcedureContext alterProcedure() throws RecognitionException {
12780 		AlterProcedureContext _localctx = new AlterProcedureContext(_ctx, getState());
12781 		enterRule(_localctx, 258, RULE_alterProcedure);
12782 		int _la;
12783 		try {
12784 			enterOuterAlt(_localctx, 1);
12785 			{
12786 			setState(2006);
12787 			match(ALTER);
12788 			setState(2007);
12789 			_la = _input.LA(1);
12790 			if ( !(_la==PROCEDURE || _la==PROC) ) {
12791 			_errHandler.recoverInline(this);
12792 			}
12793 			else {
12794 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
12795 				_errHandler.reportMatch(this);
12796 				consume();
12797 			}
12798 			setState(2008);
12799 			procedureName();
12800 			setState(2009);
12801 			procParameters();
12802 			setState(2010);
12803 			createOrAlterProcClause();
12804 			}
12805 		}
12806 		catch (RecognitionException re) {
12807 			_localctx.exception = re;
12808 			_errHandler.reportError(this, re);
12809 			_errHandler.recover(this, re);
12810 		}
12811 		finally {
12812 			exitRule();
12813 		}
12814 		return _localctx;
12815 	}
12816 
12817 	public static class AlterFunctionContext extends ParserRuleContext {
12818 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12819 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
12820 		public FunctionNameContext functionName() {
12821 			return getRuleContext(FunctionNameContext.class,0);
12822 		}
12823 		public FuncParametersContext funcParameters() {
12824 			return getRuleContext(FuncParametersContext.class,0);
12825 		}
12826 		public FuncReturnsContext funcReturns() {
12827 			return getRuleContext(FuncReturnsContext.class,0);
12828 		}
12829 		public AlterFunctionContext(ParserRuleContext parent, int invokingState) {
12830 			super(parent, invokingState);
12831 		}
12832 		@Override public int getRuleIndex() { return RULE_alterFunction; }
12833 		@Override
12834 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12835 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterFunction(this);
12836 			else return visitor.visitChildren(this);
12837 		}
12838 	}
12839 
12840 	public final AlterFunctionContext alterFunction() throws RecognitionException {
12841 		AlterFunctionContext _localctx = new AlterFunctionContext(_ctx, getState());
12842 		enterRule(_localctx, 260, RULE_alterFunction);
12843 		try {
12844 			enterOuterAlt(_localctx, 1);
12845 			{
12846 			setState(2012);
12847 			match(ALTER);
12848 			setState(2013);
12849 			match(FUNCTION);
12850 			setState(2014);
12851 			functionName();
12852 			setState(2015);
12853 			funcParameters();
12854 			setState(2016);
12855 			funcReturns();
12856 			}
12857 		}
12858 		catch (RecognitionException re) {
12859 			_localctx.exception = re;
12860 			_errHandler.reportError(this, re);
12861 			_errHandler.recover(this, re);
12862 		}
12863 		finally {
12864 			exitRule();
12865 		}
12866 		return _localctx;
12867 	}
12868 
12869 	public static class AlterViewContext extends ParserRuleContext {
12870 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12871 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
12872 		public ViewNameContext viewName() {
12873 			return getRuleContext(ViewNameContext.class,0);
12874 		}
12875 		public CreateOrAlterViewClauseContext createOrAlterViewClause() {
12876 			return getRuleContext(CreateOrAlterViewClauseContext.class,0);
12877 		}
12878 		public AlterViewContext(ParserRuleContext parent, int invokingState) {
12879 			super(parent, invokingState);
12880 		}
12881 		@Override public int getRuleIndex() { return RULE_alterView; }
12882 		@Override
12883 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12884 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterView(this);
12885 			else return visitor.visitChildren(this);
12886 		}
12887 	}
12888 
12889 	public final AlterViewContext alterView() throws RecognitionException {
12890 		AlterViewContext _localctx = new AlterViewContext(_ctx, getState());
12891 		enterRule(_localctx, 262, RULE_alterView);
12892 		try {
12893 			enterOuterAlt(_localctx, 1);
12894 			{
12895 			setState(2018);
12896 			match(ALTER);
12897 			setState(2019);
12898 			match(VIEW);
12899 			setState(2020);
12900 			viewName();
12901 			setState(2021);
12902 			createOrAlterViewClause();
12903 			}
12904 		}
12905 		catch (RecognitionException re) {
12906 			_localctx.exception = re;
12907 			_errHandler.reportError(this, re);
12908 			_errHandler.recover(this, re);
12909 		}
12910 		finally {
12911 			exitRule();
12912 		}
12913 		return _localctx;
12914 	}
12915 
12916 	public static class AlterTriggerContext extends ParserRuleContext {
12917 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12918 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
12919 		public TriggerNameContext triggerName() {
12920 			return getRuleContext(TriggerNameContext.class,0);
12921 		}
12922 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
12923 		public TriggerTargetContext triggerTarget() {
12924 			return getRuleContext(TriggerTargetContext.class,0);
12925 		}
12926 		public CreateTriggerClauseContext createTriggerClause() {
12927 			return getRuleContext(CreateTriggerClauseContext.class,0);
12928 		}
12929 		public AlterTriggerContext(ParserRuleContext parent, int invokingState) {
12930 			super(parent, invokingState);
12931 		}
12932 		@Override public int getRuleIndex() { return RULE_alterTrigger; }
12933 		@Override
12934 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12935 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTrigger(this);
12936 			else return visitor.visitChildren(this);
12937 		}
12938 	}
12939 
12940 	public final AlterTriggerContext alterTrigger() throws RecognitionException {
12941 		AlterTriggerContext _localctx = new AlterTriggerContext(_ctx, getState());
12942 		enterRule(_localctx, 264, RULE_alterTrigger);
12943 		try {
12944 			enterOuterAlt(_localctx, 1);
12945 			{
12946 			setState(2023);
12947 			match(ALTER);
12948 			setState(2024);
12949 			match(TRIGGER);
12950 			setState(2025);
12951 			triggerName();
12952 			setState(2026);
12953 			match(ON);
12954 			setState(2027);
12955 			triggerTarget();
12956 			setState(2028);
12957 			createTriggerClause();
12958 			}
12959 		}
12960 		catch (RecognitionException re) {
12961 			_localctx.exception = re;
12962 			_errHandler.reportError(this, re);
12963 			_errHandler.recover(this, re);
12964 		}
12965 		finally {
12966 			exitRule();
12967 		}
12968 		return _localctx;
12969 	}
12970 
12971 	public static class AlterSequenceContext extends ParserRuleContext {
12972 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12973 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
12974 		public SequenceNameContext sequenceName() {
12975 			return getRuleContext(SequenceNameContext.class,0);
12976 		}
12977 		public List<CreateOrAlterSequenceClauseContext> createOrAlterSequenceClause() {
12978 			return getRuleContexts(CreateOrAlterSequenceClauseContext.class);
12979 		}
12980 		public CreateOrAlterSequenceClauseContext createOrAlterSequenceClause(int i) {
12981 			return getRuleContext(CreateOrAlterSequenceClauseContext.class,i);
12982 		}
12983 		public AlterSequenceContext(ParserRuleContext parent, int invokingState) {
12984 			super(parent, invokingState);
12985 		}
12986 		@Override public int getRuleIndex() { return RULE_alterSequence; }
12987 		@Override
12988 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12989 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSequence(this);
12990 			else return visitor.visitChildren(this);
12991 		}
12992 	}
12993 
12994 	public final AlterSequenceContext alterSequence() throws RecognitionException {
12995 		AlterSequenceContext _localctx = new AlterSequenceContext(_ctx, getState());
12996 		enterRule(_localctx, 266, RULE_alterSequence);
12997 		int _la;
12998 		try {
12999 			enterOuterAlt(_localctx, 1);
13000 			{
13001 			setState(2030);
13002 			match(ALTER);
13003 			setState(2031);
13004 			match(SEQUENCE);
13005 			setState(2032);
13006 			sequenceName();
13007 			setState(2036);
13008 			_errHandler.sync(this);
13009 			_la = _input.LA(1);
13010 			while (_la==AS || _la==NO || _la==START || ((((_la - 522)) & ~0x3f) == 0 && ((1L << (_la - 522)) & ((1L << (INCREMENT - 522)) | (1L << (CYCLE - 522)) | (1L << (CACHE - 522)) | (1L << (MINVALUE - 522)) | (1L << (MAXVALUE - 522)) | (1L << (RESTART - 522)))) != 0)) {
13011 				{
13012 				{
13013 				setState(2033);
13014 				createOrAlterSequenceClause();
13015 				}
13016 				}
13017 				setState(2038);
13018 				_errHandler.sync(this);
13019 				_la = _input.LA(1);
13020 			}
13021 			}
13022 		}
13023 		catch (RecognitionException re) {
13024 			_localctx.exception = re;
13025 			_errHandler.reportError(this, re);
13026 			_errHandler.recover(this, re);
13027 		}
13028 		finally {
13029 			exitRule();
13030 		}
13031 		return _localctx;
13032 	}
13033 
13034 	public static class AlterServiceContext extends ParserRuleContext {
13035 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13036 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
13037 		public ServiceNameContext serviceName() {
13038 			return getRuleContext(ServiceNameContext.class,0);
13039 		}
13040 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13041 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
13042 		public QueueNameContext queueName() {
13043 			return getRuleContext(QueueNameContext.class,0);
13044 		}
13045 		public AlterServiceClauseContext alterServiceClause() {
13046 			return getRuleContext(AlterServiceClauseContext.class,0);
13047 		}
13048 		public AlterServiceContext(ParserRuleContext parent, int invokingState) {
13049 			super(parent, invokingState);
13050 		}
13051 		@Override public int getRuleIndex() { return RULE_alterService; }
13052 		@Override
13053 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13054 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterService(this);
13055 			else return visitor.visitChildren(this);
13056 		}
13057 	}
13058 
13059 	public final AlterServiceContext alterService() throws RecognitionException {
13060 		AlterServiceContext _localctx = new AlterServiceContext(_ctx, getState());
13061 		enterRule(_localctx, 268, RULE_alterService);
13062 		int _la;
13063 		try {
13064 			enterOuterAlt(_localctx, 1);
13065 			{
13066 			setState(2039);
13067 			match(ALTER);
13068 			setState(2040);
13069 			match(SERVICE);
13070 			setState(2041);
13071 			serviceName();
13072 			setState(2045);
13073 			_errHandler.sync(this);
13074 			_la = _input.LA(1);
13075 			if (_la==ON) {
13076 				{
13077 				setState(2042);
13078 				match(ON);
13079 				setState(2043);
13080 				match(QUEUE);
13081 				setState(2044);
13082 				queueName();
13083 				}
13084 			}
13085 
13086 			setState(2048);
13087 			_errHandler.sync(this);
13088 			_la = _input.LA(1);
13089 			if (_la==LP_) {
13090 				{
13091 				setState(2047);
13092 				alterServiceClause();
13093 				}
13094 			}
13095 
13096 			}
13097 		}
13098 		catch (RecognitionException re) {
13099 			_localctx.exception = re;
13100 			_errHandler.reportError(this, re);
13101 			_errHandler.recover(this, re);
13102 		}
13103 		finally {
13104 			exitRule();
13105 		}
13106 		return _localctx;
13107 	}
13108 
13109 	public static class AlterSchemaContext extends ParserRuleContext {
13110 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13111 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
13112 		public SchemaNameContext schemaName() {
13113 			return getRuleContext(SchemaNameContext.class,0);
13114 		}
13115 		public TerminalNode TRANSFER() { return getToken(SQLServerStatementParser.TRANSFER, 0); }
13116 		public IgnoredIdentifierContext ignoredIdentifier() {
13117 			return getRuleContext(IgnoredIdentifierContext.class,0);
13118 		}
13119 		public Class_Context class_() {
13120 			return getRuleContext(Class_Context.class,0);
13121 		}
13122 		public AlterSchemaContext(ParserRuleContext parent, int invokingState) {
13123 			super(parent, invokingState);
13124 		}
13125 		@Override public int getRuleIndex() { return RULE_alterSchema; }
13126 		@Override
13127 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13128 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSchema(this);
13129 			else return visitor.visitChildren(this);
13130 		}
13131 	}
13132 
13133 	public final AlterSchemaContext alterSchema() throws RecognitionException {
13134 		AlterSchemaContext _localctx = new AlterSchemaContext(_ctx, getState());
13135 		enterRule(_localctx, 270, RULE_alterSchema);
13136 		try {
13137 			enterOuterAlt(_localctx, 1);
13138 			{
13139 			setState(2050);
13140 			match(ALTER);
13141 			setState(2051);
13142 			match(SCHEMA);
13143 			setState(2052);
13144 			schemaName();
13145 			setState(2053);
13146 			match(TRANSFER);
13147 			setState(2055);
13148 			_errHandler.sync(this);
13149 			switch ( getInterpreter().adaptivePredict(_input,126,_ctx) ) {
13150 			case 1:
13151 				{
13152 				setState(2054);
13153 				class_();
13154 				}
13155 				break;
13156 			}
13157 			setState(2057);
13158 			ignoredIdentifier();
13159 			}
13160 		}
13161 		catch (RecognitionException re) {
13162 			_localctx.exception = re;
13163 			_errHandler.reportError(this, re);
13164 			_errHandler.recover(this, re);
13165 		}
13166 		finally {
13167 			exitRule();
13168 		}
13169 		return _localctx;
13170 	}
13171 
13172 	public static class DropTableContext extends ParserRuleContext {
13173 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13174 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
13175 		public TableNamesContext tableNames() {
13176 			return getRuleContext(TableNamesContext.class,0);
13177 		}
13178 		public IfExistsContext ifExists() {
13179 			return getRuleContext(IfExistsContext.class,0);
13180 		}
13181 		public DropTableContext(ParserRuleContext parent, int invokingState) {
13182 			super(parent, invokingState);
13183 		}
13184 		@Override public int getRuleIndex() { return RULE_dropTable; }
13185 		@Override
13186 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13187 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropTable(this);
13188 			else return visitor.visitChildren(this);
13189 		}
13190 	}
13191 
13192 	public final DropTableContext dropTable() throws RecognitionException {
13193 		DropTableContext _localctx = new DropTableContext(_ctx, getState());
13194 		enterRule(_localctx, 272, RULE_dropTable);
13195 		int _la;
13196 		try {
13197 			enterOuterAlt(_localctx, 1);
13198 			{
13199 			setState(2059);
13200 			match(DROP);
13201 			setState(2060);
13202 			match(TABLE);
13203 			setState(2062);
13204 			_errHandler.sync(this);
13205 			_la = _input.LA(1);
13206 			if (_la==IF) {
13207 				{
13208 				setState(2061);
13209 				ifExists();
13210 				}
13211 			}
13212 
13213 			setState(2064);
13214 			tableNames();
13215 			}
13216 		}
13217 		catch (RecognitionException re) {
13218 			_localctx.exception = re;
13219 			_errHandler.reportError(this, re);
13220 			_errHandler.recover(this, re);
13221 		}
13222 		finally {
13223 			exitRule();
13224 		}
13225 		return _localctx;
13226 	}
13227 
13228 	public static class DropIndexContext extends ParserRuleContext {
13229 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13230 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
13231 		public IndexNameContext indexName() {
13232 			return getRuleContext(IndexNameContext.class,0);
13233 		}
13234 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13235 		public TableNameContext tableName() {
13236 			return getRuleContext(TableNameContext.class,0);
13237 		}
13238 		public IfExistsContext ifExists() {
13239 			return getRuleContext(IfExistsContext.class,0);
13240 		}
13241 		public DropIndexContext(ParserRuleContext parent, int invokingState) {
13242 			super(parent, invokingState);
13243 		}
13244 		@Override public int getRuleIndex() { return RULE_dropIndex; }
13245 		@Override
13246 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13247 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropIndex(this);
13248 			else return visitor.visitChildren(this);
13249 		}
13250 	}
13251 
13252 	public final DropIndexContext dropIndex() throws RecognitionException {
13253 		DropIndexContext _localctx = new DropIndexContext(_ctx, getState());
13254 		enterRule(_localctx, 274, RULE_dropIndex);
13255 		int _la;
13256 		try {
13257 			enterOuterAlt(_localctx, 1);
13258 			{
13259 			setState(2066);
13260 			match(DROP);
13261 			setState(2067);
13262 			match(INDEX);
13263 			setState(2069);
13264 			_errHandler.sync(this);
13265 			_la = _input.LA(1);
13266 			if (_la==IF) {
13267 				{
13268 				setState(2068);
13269 				ifExists();
13270 				}
13271 			}
13272 
13273 			setState(2071);
13274 			indexName();
13275 			setState(2072);
13276 			match(ON);
13277 			setState(2073);
13278 			tableName();
13279 			}
13280 		}
13281 		catch (RecognitionException re) {
13282 			_localctx.exception = re;
13283 			_errHandler.reportError(this, re);
13284 			_errHandler.recover(this, re);
13285 		}
13286 		finally {
13287 			exitRule();
13288 		}
13289 		return _localctx;
13290 	}
13291 
13292 	public static class DropDatabaseContext extends ParserRuleContext {
13293 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13294 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
13295 		public List<DatabaseNameContext> databaseName() {
13296 			return getRuleContexts(DatabaseNameContext.class);
13297 		}
13298 		public DatabaseNameContext databaseName(int i) {
13299 			return getRuleContext(DatabaseNameContext.class,i);
13300 		}
13301 		public IfExistsContext ifExists() {
13302 			return getRuleContext(IfExistsContext.class,0);
13303 		}
13304 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13305 		public TerminalNode COMMA_(int i) {
13306 			return getToken(SQLServerStatementParser.COMMA_, i);
13307 		}
13308 		public DropDatabaseContext(ParserRuleContext parent, int invokingState) {
13309 			super(parent, invokingState);
13310 		}
13311 		@Override public int getRuleIndex() { return RULE_dropDatabase; }
13312 		@Override
13313 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13314 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropDatabase(this);
13315 			else return visitor.visitChildren(this);
13316 		}
13317 	}
13318 
13319 	public final DropDatabaseContext dropDatabase() throws RecognitionException {
13320 		DropDatabaseContext _localctx = new DropDatabaseContext(_ctx, getState());
13321 		enterRule(_localctx, 276, RULE_dropDatabase);
13322 		int _la;
13323 		try {
13324 			enterOuterAlt(_localctx, 1);
13325 			{
13326 			setState(2075);
13327 			match(DROP);
13328 			setState(2076);
13329 			match(DATABASE);
13330 			setState(2078);
13331 			_errHandler.sync(this);
13332 			_la = _input.LA(1);
13333 			if (_la==IF) {
13334 				{
13335 				setState(2077);
13336 				ifExists();
13337 				}
13338 			}
13339 
13340 			setState(2080);
13341 			databaseName();
13342 			setState(2085);
13343 			_errHandler.sync(this);
13344 			_la = _input.LA(1);
13345 			while (_la==COMMA_) {
13346 				{
13347 				{
13348 				setState(2081);
13349 				match(COMMA_);
13350 				setState(2082);
13351 				databaseName();
13352 				}
13353 				}
13354 				setState(2087);
13355 				_errHandler.sync(this);
13356 				_la = _input.LA(1);
13357 			}
13358 			}
13359 		}
13360 		catch (RecognitionException re) {
13361 			_localctx.exception = re;
13362 			_errHandler.reportError(this, re);
13363 			_errHandler.recover(this, re);
13364 		}
13365 		finally {
13366 			exitRule();
13367 		}
13368 		return _localctx;
13369 	}
13370 
13371 	public static class DropFunctionContext extends ParserRuleContext {
13372 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13373 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
13374 		public List<FunctionNameContext> functionName() {
13375 			return getRuleContexts(FunctionNameContext.class);
13376 		}
13377 		public FunctionNameContext functionName(int i) {
13378 			return getRuleContext(FunctionNameContext.class,i);
13379 		}
13380 		public IfExistsContext ifExists() {
13381 			return getRuleContext(IfExistsContext.class,0);
13382 		}
13383 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13384 		public TerminalNode COMMA_(int i) {
13385 			return getToken(SQLServerStatementParser.COMMA_, i);
13386 		}
13387 		public DropFunctionContext(ParserRuleContext parent, int invokingState) {
13388 			super(parent, invokingState);
13389 		}
13390 		@Override public int getRuleIndex() { return RULE_dropFunction; }
13391 		@Override
13392 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13393 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropFunction(this);
13394 			else return visitor.visitChildren(this);
13395 		}
13396 	}
13397 
13398 	public final DropFunctionContext dropFunction() throws RecognitionException {
13399 		DropFunctionContext _localctx = new DropFunctionContext(_ctx, getState());
13400 		enterRule(_localctx, 278, RULE_dropFunction);
13401 		int _la;
13402 		try {
13403 			enterOuterAlt(_localctx, 1);
13404 			{
13405 			setState(2088);
13406 			match(DROP);
13407 			setState(2089);
13408 			match(FUNCTION);
13409 			setState(2091);
13410 			_errHandler.sync(this);
13411 			_la = _input.LA(1);
13412 			if (_la==IF) {
13413 				{
13414 				setState(2090);
13415 				ifExists();
13416 				}
13417 			}
13418 
13419 			setState(2093);
13420 			functionName();
13421 			setState(2098);
13422 			_errHandler.sync(this);
13423 			_la = _input.LA(1);
13424 			while (_la==COMMA_) {
13425 				{
13426 				{
13427 				setState(2094);
13428 				match(COMMA_);
13429 				setState(2095);
13430 				functionName();
13431 				}
13432 				}
13433 				setState(2100);
13434 				_errHandler.sync(this);
13435 				_la = _input.LA(1);
13436 			}
13437 			}
13438 		}
13439 		catch (RecognitionException re) {
13440 			_localctx.exception = re;
13441 			_errHandler.reportError(this, re);
13442 			_errHandler.recover(this, re);
13443 		}
13444 		finally {
13445 			exitRule();
13446 		}
13447 		return _localctx;
13448 	}
13449 
13450 	public static class DropProcedureContext extends ParserRuleContext {
13451 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13452 		public List<ProcedureNameContext> procedureName() {
13453 			return getRuleContexts(ProcedureNameContext.class);
13454 		}
13455 		public ProcedureNameContext procedureName(int i) {
13456 			return getRuleContext(ProcedureNameContext.class,i);
13457 		}
13458 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
13459 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
13460 		public IfExistsContext ifExists() {
13461 			return getRuleContext(IfExistsContext.class,0);
13462 		}
13463 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13464 		public TerminalNode COMMA_(int i) {
13465 			return getToken(SQLServerStatementParser.COMMA_, i);
13466 		}
13467 		public DropProcedureContext(ParserRuleContext parent, int invokingState) {
13468 			super(parent, invokingState);
13469 		}
13470 		@Override public int getRuleIndex() { return RULE_dropProcedure; }
13471 		@Override
13472 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13473 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropProcedure(this);
13474 			else return visitor.visitChildren(this);
13475 		}
13476 	}
13477 
13478 	public final DropProcedureContext dropProcedure() throws RecognitionException {
13479 		DropProcedureContext _localctx = new DropProcedureContext(_ctx, getState());
13480 		enterRule(_localctx, 280, RULE_dropProcedure);
13481 		int _la;
13482 		try {
13483 			enterOuterAlt(_localctx, 1);
13484 			{
13485 			setState(2101);
13486 			match(DROP);
13487 			setState(2102);
13488 			_la = _input.LA(1);
13489 			if ( !(_la==PROCEDURE || _la==PROC) ) {
13490 			_errHandler.recoverInline(this);
13491 			}
13492 			else {
13493 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
13494 				_errHandler.reportMatch(this);
13495 				consume();
13496 			}
13497 			setState(2104);
13498 			_errHandler.sync(this);
13499 			_la = _input.LA(1);
13500 			if (_la==IF) {
13501 				{
13502 				setState(2103);
13503 				ifExists();
13504 				}
13505 			}
13506 
13507 			setState(2106);
13508 			procedureName();
13509 			setState(2111);
13510 			_errHandler.sync(this);
13511 			_la = _input.LA(1);
13512 			while (_la==COMMA_) {
13513 				{
13514 				{
13515 				setState(2107);
13516 				match(COMMA_);
13517 				setState(2108);
13518 				procedureName();
13519 				}
13520 				}
13521 				setState(2113);
13522 				_errHandler.sync(this);
13523 				_la = _input.LA(1);
13524 			}
13525 			}
13526 		}
13527 		catch (RecognitionException re) {
13528 			_localctx.exception = re;
13529 			_errHandler.reportError(this, re);
13530 			_errHandler.recover(this, re);
13531 		}
13532 		finally {
13533 			exitRule();
13534 		}
13535 		return _localctx;
13536 	}
13537 
13538 	public static class DropViewContext extends ParserRuleContext {
13539 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13540 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
13541 		public List<ViewNameContext> viewName() {
13542 			return getRuleContexts(ViewNameContext.class);
13543 		}
13544 		public ViewNameContext viewName(int i) {
13545 			return getRuleContext(ViewNameContext.class,i);
13546 		}
13547 		public IfExistsContext ifExists() {
13548 			return getRuleContext(IfExistsContext.class,0);
13549 		}
13550 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13551 		public TerminalNode COMMA_(int i) {
13552 			return getToken(SQLServerStatementParser.COMMA_, i);
13553 		}
13554 		public DropViewContext(ParserRuleContext parent, int invokingState) {
13555 			super(parent, invokingState);
13556 		}
13557 		@Override public int getRuleIndex() { return RULE_dropView; }
13558 		@Override
13559 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13560 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropView(this);
13561 			else return visitor.visitChildren(this);
13562 		}
13563 	}
13564 
13565 	public final DropViewContext dropView() throws RecognitionException {
13566 		DropViewContext _localctx = new DropViewContext(_ctx, getState());
13567 		enterRule(_localctx, 282, RULE_dropView);
13568 		int _la;
13569 		try {
13570 			enterOuterAlt(_localctx, 1);
13571 			{
13572 			setState(2114);
13573 			match(DROP);
13574 			setState(2115);
13575 			match(VIEW);
13576 			setState(2117);
13577 			_errHandler.sync(this);
13578 			_la = _input.LA(1);
13579 			if (_la==IF) {
13580 				{
13581 				setState(2116);
13582 				ifExists();
13583 				}
13584 			}
13585 
13586 			setState(2119);
13587 			viewName();
13588 			setState(2124);
13589 			_errHandler.sync(this);
13590 			_la = _input.LA(1);
13591 			while (_la==COMMA_) {
13592 				{
13593 				{
13594 				setState(2120);
13595 				match(COMMA_);
13596 				setState(2121);
13597 				viewName();
13598 				}
13599 				}
13600 				setState(2126);
13601 				_errHandler.sync(this);
13602 				_la = _input.LA(1);
13603 			}
13604 			}
13605 		}
13606 		catch (RecognitionException re) {
13607 			_localctx.exception = re;
13608 			_errHandler.reportError(this, re);
13609 			_errHandler.recover(this, re);
13610 		}
13611 		finally {
13612 			exitRule();
13613 		}
13614 		return _localctx;
13615 	}
13616 
13617 	public static class DropTriggerContext extends ParserRuleContext {
13618 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13619 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
13620 		public List<TriggerNameContext> triggerName() {
13621 			return getRuleContexts(TriggerNameContext.class);
13622 		}
13623 		public TriggerNameContext triggerName(int i) {
13624 			return getRuleContext(TriggerNameContext.class,i);
13625 		}
13626 		public IfExistsContext ifExists() {
13627 			return getRuleContext(IfExistsContext.class,0);
13628 		}
13629 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13630 		public TerminalNode COMMA_(int i) {
13631 			return getToken(SQLServerStatementParser.COMMA_, i);
13632 		}
13633 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13634 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
13635 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
13636 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
13637 		public DropTriggerContext(ParserRuleContext parent, int invokingState) {
13638 			super(parent, invokingState);
13639 		}
13640 		@Override public int getRuleIndex() { return RULE_dropTrigger; }
13641 		@Override
13642 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13643 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropTrigger(this);
13644 			else return visitor.visitChildren(this);
13645 		}
13646 	}
13647 
13648 	public final DropTriggerContext dropTrigger() throws RecognitionException {
13649 		DropTriggerContext _localctx = new DropTriggerContext(_ctx, getState());
13650 		enterRule(_localctx, 284, RULE_dropTrigger);
13651 		int _la;
13652 		try {
13653 			enterOuterAlt(_localctx, 1);
13654 			{
13655 			setState(2127);
13656 			match(DROP);
13657 			setState(2128);
13658 			match(TRIGGER);
13659 			setState(2130);
13660 			_errHandler.sync(this);
13661 			_la = _input.LA(1);
13662 			if (_la==IF) {
13663 				{
13664 				setState(2129);
13665 				ifExists();
13666 				}
13667 			}
13668 
13669 			setState(2132);
13670 			triggerName();
13671 			setState(2137);
13672 			_errHandler.sync(this);
13673 			_la = _input.LA(1);
13674 			while (_la==COMMA_) {
13675 				{
13676 				{
13677 				setState(2133);
13678 				match(COMMA_);
13679 				setState(2134);
13680 				triggerName();
13681 				}
13682 				}
13683 				setState(2139);
13684 				_errHandler.sync(this);
13685 				_la = _input.LA(1);
13686 			}
13687 			setState(2146);
13688 			_errHandler.sync(this);
13689 			_la = _input.LA(1);
13690 			if (_la==ON) {
13691 				{
13692 				setState(2140);
13693 				match(ON);
13694 				setState(2144);
13695 				_errHandler.sync(this);
13696 				switch (_input.LA(1)) {
13697 				case DATABASE:
13698 					{
13699 					setState(2141);
13700 					match(DATABASE);
13701 					}
13702 					break;
13703 				case ALL:
13704 					{
13705 					setState(2142);
13706 					match(ALL);
13707 					setState(2143);
13708 					match(SERVER);
13709 					}
13710 					break;
13711 				default:
13712 					throw new NoViableAltException(this);
13713 				}
13714 				}
13715 			}
13716 
13717 			}
13718 		}
13719 		catch (RecognitionException re) {
13720 			_localctx.exception = re;
13721 			_errHandler.reportError(this, re);
13722 			_errHandler.recover(this, re);
13723 		}
13724 		finally {
13725 			exitRule();
13726 		}
13727 		return _localctx;
13728 	}
13729 
13730 	public static class DropSequenceContext extends ParserRuleContext {
13731 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13732 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
13733 		public List<SequenceNameContext> sequenceName() {
13734 			return getRuleContexts(SequenceNameContext.class);
13735 		}
13736 		public SequenceNameContext sequenceName(int i) {
13737 			return getRuleContext(SequenceNameContext.class,i);
13738 		}
13739 		public IfExistsContext ifExists() {
13740 			return getRuleContext(IfExistsContext.class,0);
13741 		}
13742 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13743 		public TerminalNode COMMA_(int i) {
13744 			return getToken(SQLServerStatementParser.COMMA_, i);
13745 		}
13746 		public DropSequenceContext(ParserRuleContext parent, int invokingState) {
13747 			super(parent, invokingState);
13748 		}
13749 		@Override public int getRuleIndex() { return RULE_dropSequence; }
13750 		@Override
13751 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13752 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropSequence(this);
13753 			else return visitor.visitChildren(this);
13754 		}
13755 	}
13756 
13757 	public final DropSequenceContext dropSequence() throws RecognitionException {
13758 		DropSequenceContext _localctx = new DropSequenceContext(_ctx, getState());
13759 		enterRule(_localctx, 286, RULE_dropSequence);
13760 		int _la;
13761 		try {
13762 			enterOuterAlt(_localctx, 1);
13763 			{
13764 			setState(2148);
13765 			match(DROP);
13766 			setState(2149);
13767 			match(SEQUENCE);
13768 			setState(2151);
13769 			_errHandler.sync(this);
13770 			_la = _input.LA(1);
13771 			if (_la==IF) {
13772 				{
13773 				setState(2150);
13774 				ifExists();
13775 				}
13776 			}
13777 
13778 			setState(2153);
13779 			sequenceName();
13780 			setState(2158);
13781 			_errHandler.sync(this);
13782 			_la = _input.LA(1);
13783 			while (_la==COMMA_) {
13784 				{
13785 				{
13786 				setState(2154);
13787 				match(COMMA_);
13788 				setState(2155);
13789 				sequenceName();
13790 				}
13791 				}
13792 				setState(2160);
13793 				_errHandler.sync(this);
13794 				_la = _input.LA(1);
13795 			}
13796 			}
13797 		}
13798 		catch (RecognitionException re) {
13799 			_localctx.exception = re;
13800 			_errHandler.reportError(this, re);
13801 			_errHandler.recover(this, re);
13802 		}
13803 		finally {
13804 			exitRule();
13805 		}
13806 		return _localctx;
13807 	}
13808 
13809 	public static class DropServiceContext extends ParserRuleContext {
13810 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13811 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
13812 		public ServiceNameContext serviceName() {
13813 			return getRuleContext(ServiceNameContext.class,0);
13814 		}
13815 		public DropServiceContext(ParserRuleContext parent, int invokingState) {
13816 			super(parent, invokingState);
13817 		}
13818 		@Override public int getRuleIndex() { return RULE_dropService; }
13819 		@Override
13820 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13821 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropService(this);
13822 			else return visitor.visitChildren(this);
13823 		}
13824 	}
13825 
13826 	public final DropServiceContext dropService() throws RecognitionException {
13827 		DropServiceContext _localctx = new DropServiceContext(_ctx, getState());
13828 		enterRule(_localctx, 288, RULE_dropService);
13829 		try {
13830 			enterOuterAlt(_localctx, 1);
13831 			{
13832 			setState(2161);
13833 			match(DROP);
13834 			setState(2162);
13835 			match(SERVICE);
13836 			setState(2163);
13837 			serviceName();
13838 			}
13839 		}
13840 		catch (RecognitionException re) {
13841 			_localctx.exception = re;
13842 			_errHandler.reportError(this, re);
13843 			_errHandler.recover(this, re);
13844 		}
13845 		finally {
13846 			exitRule();
13847 		}
13848 		return _localctx;
13849 	}
13850 
13851 	public static class DropSchemaContext extends ParserRuleContext {
13852 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
13853 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
13854 		public SchemaNameContext schemaName() {
13855 			return getRuleContext(SchemaNameContext.class,0);
13856 		}
13857 		public IfExistsContext ifExists() {
13858 			return getRuleContext(IfExistsContext.class,0);
13859 		}
13860 		public DropSchemaContext(ParserRuleContext parent, int invokingState) {
13861 			super(parent, invokingState);
13862 		}
13863 		@Override public int getRuleIndex() { return RULE_dropSchema; }
13864 		@Override
13865 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13866 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropSchema(this);
13867 			else return visitor.visitChildren(this);
13868 		}
13869 	}
13870 
13871 	public final DropSchemaContext dropSchema() throws RecognitionException {
13872 		DropSchemaContext _localctx = new DropSchemaContext(_ctx, getState());
13873 		enterRule(_localctx, 290, RULE_dropSchema);
13874 		int _la;
13875 		try {
13876 			enterOuterAlt(_localctx, 1);
13877 			{
13878 			setState(2165);
13879 			match(DROP);
13880 			setState(2166);
13881 			match(SCHEMA);
13882 			setState(2168);
13883 			_errHandler.sync(this);
13884 			_la = _input.LA(1);
13885 			if (_la==IF) {
13886 				{
13887 				setState(2167);
13888 				ifExists();
13889 				}
13890 			}
13891 
13892 			setState(2170);
13893 			schemaName();
13894 			}
13895 		}
13896 		catch (RecognitionException re) {
13897 			_localctx.exception = re;
13898 			_errHandler.reportError(this, re);
13899 			_errHandler.recover(this, re);
13900 		}
13901 		finally {
13902 			exitRule();
13903 		}
13904 		return _localctx;
13905 	}
13906 
13907 	public static class TruncateTableContext extends ParserRuleContext {
13908 		public TerminalNode TRUNCATE() { return getToken(SQLServerStatementParser.TRUNCATE, 0); }
13909 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
13910 		public TableNameContext tableName() {
13911 			return getRuleContext(TableNameContext.class,0);
13912 		}
13913 		public TruncateTableContext(ParserRuleContext parent, int invokingState) {
13914 			super(parent, invokingState);
13915 		}
13916 		@Override public int getRuleIndex() { return RULE_truncateTable; }
13917 		@Override
13918 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13919 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTruncateTable(this);
13920 			else return visitor.visitChildren(this);
13921 		}
13922 	}
13923 
13924 	public final TruncateTableContext truncateTable() throws RecognitionException {
13925 		TruncateTableContext _localctx = new TruncateTableContext(_ctx, getState());
13926 		enterRule(_localctx, 292, RULE_truncateTable);
13927 		try {
13928 			enterOuterAlt(_localctx, 1);
13929 			{
13930 			setState(2172);
13931 			match(TRUNCATE);
13932 			setState(2173);
13933 			match(TABLE);
13934 			setState(2174);
13935 			tableName();
13936 			}
13937 		}
13938 		catch (RecognitionException re) {
13939 			_localctx.exception = re;
13940 			_errHandler.reportError(this, re);
13941 			_errHandler.recover(this, re);
13942 		}
13943 		finally {
13944 			exitRule();
13945 		}
13946 		return _localctx;
13947 	}
13948 
13949 	public static class FileTableClauseContext extends ParserRuleContext {
13950 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
13951 		public TerminalNode FILETABLE() { return getToken(SQLServerStatementParser.FILETABLE, 0); }
13952 		public FileTableClauseContext(ParserRuleContext parent, int invokingState) {
13953 			super(parent, invokingState);
13954 		}
13955 		@Override public int getRuleIndex() { return RULE_fileTableClause; }
13956 		@Override
13957 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13958 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileTableClause(this);
13959 			else return visitor.visitChildren(this);
13960 		}
13961 	}
13962 
13963 	public final FileTableClauseContext fileTableClause() throws RecognitionException {
13964 		FileTableClauseContext _localctx = new FileTableClauseContext(_ctx, getState());
13965 		enterRule(_localctx, 294, RULE_fileTableClause);
13966 		int _la;
13967 		try {
13968 			enterOuterAlt(_localctx, 1);
13969 			{
13970 			setState(2178);
13971 			_errHandler.sync(this);
13972 			_la = _input.LA(1);
13973 			if (_la==AS) {
13974 				{
13975 				setState(2176);
13976 				match(AS);
13977 				setState(2177);
13978 				match(FILETABLE);
13979 				}
13980 			}
13981 
13982 			}
13983 		}
13984 		catch (RecognitionException re) {
13985 			_localctx.exception = re;
13986 			_errHandler.reportError(this, re);
13987 			_errHandler.recover(this, re);
13988 		}
13989 		finally {
13990 			exitRule();
13991 		}
13992 		return _localctx;
13993 	}
13994 
13995 	public static class CreateDefinitionClauseContext extends ParserRuleContext {
13996 		public CreateTableDefinitionsContext createTableDefinitions() {
13997 			return getRuleContext(CreateTableDefinitionsContext.class,0);
13998 		}
13999 		public PartitionSchemeContext partitionScheme() {
14000 			return getRuleContext(PartitionSchemeContext.class,0);
14001 		}
14002 		public FileGroupContext fileGroup() {
14003 			return getRuleContext(FileGroupContext.class,0);
14004 		}
14005 		public CreateDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
14006 			super(parent, invokingState);
14007 		}
14008 		@Override public int getRuleIndex() { return RULE_createDefinitionClause; }
14009 		@Override
14010 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14011 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDefinitionClause(this);
14012 			else return visitor.visitChildren(this);
14013 		}
14014 	}
14015 
14016 	public final CreateDefinitionClauseContext createDefinitionClause() throws RecognitionException {
14017 		CreateDefinitionClauseContext _localctx = new CreateDefinitionClauseContext(_ctx, getState());
14018 		enterRule(_localctx, 296, RULE_createDefinitionClause);
14019 		try {
14020 			enterOuterAlt(_localctx, 1);
14021 			{
14022 			setState(2180);
14023 			createTableDefinitions();
14024 			setState(2181);
14025 			partitionScheme();
14026 			setState(2182);
14027 			fileGroup();
14028 			}
14029 		}
14030 		catch (RecognitionException re) {
14031 			_localctx.exception = re;
14032 			_errHandler.reportError(this, re);
14033 			_errHandler.recover(this, re);
14034 		}
14035 		finally {
14036 			exitRule();
14037 		}
14038 		return _localctx;
14039 	}
14040 
14041 	public static class CreateTableDefinitionsContext extends ParserRuleContext {
14042 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
14043 		public List<CreateTableDefinitionContext> createTableDefinition() {
14044 			return getRuleContexts(CreateTableDefinitionContext.class);
14045 		}
14046 		public CreateTableDefinitionContext createTableDefinition(int i) {
14047 			return getRuleContext(CreateTableDefinitionContext.class,i);
14048 		}
14049 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
14050 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14051 		public TerminalNode COMMA_(int i) {
14052 			return getToken(SQLServerStatementParser.COMMA_, i);
14053 		}
14054 		public PeriodClauseContext periodClause() {
14055 			return getRuleContext(PeriodClauseContext.class,0);
14056 		}
14057 		public CreateTableDefinitionsContext(ParserRuleContext parent, int invokingState) {
14058 			super(parent, invokingState);
14059 		}
14060 		@Override public int getRuleIndex() { return RULE_createTableDefinitions; }
14061 		@Override
14062 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14063 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableDefinitions(this);
14064 			else return visitor.visitChildren(this);
14065 		}
14066 	}
14067 
14068 	public final CreateTableDefinitionsContext createTableDefinitions() throws RecognitionException {
14069 		CreateTableDefinitionsContext _localctx = new CreateTableDefinitionsContext(_ctx, getState());
14070 		enterRule(_localctx, 298, RULE_createTableDefinitions);
14071 		int _la;
14072 		try {
14073 			int _alt;
14074 			enterOuterAlt(_localctx, 1);
14075 			{
14076 			setState(2184);
14077 			match(LP_);
14078 			setState(2185);
14079 			createTableDefinition();
14080 			setState(2190);
14081 			_errHandler.sync(this);
14082 			_alt = getInterpreter().adaptivePredict(_input,145,_ctx);
14083 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
14084 				if ( _alt==1 ) {
14085 					{
14086 					{
14087 					setState(2186);
14088 					match(COMMA_);
14089 					setState(2187);
14090 					createTableDefinition();
14091 					}
14092 					} 
14093 				}
14094 				setState(2192);
14095 				_errHandler.sync(this);
14096 				_alt = getInterpreter().adaptivePredict(_input,145,_ctx);
14097 			}
14098 			setState(2195);
14099 			_errHandler.sync(this);
14100 			_la = _input.LA(1);
14101 			if (_la==COMMA_) {
14102 				{
14103 				setState(2193);
14104 				match(COMMA_);
14105 				setState(2194);
14106 				periodClause();
14107 				}
14108 			}
14109 
14110 			setState(2197);
14111 			match(RP_);
14112 			}
14113 		}
14114 		catch (RecognitionException re) {
14115 			_localctx.exception = re;
14116 			_errHandler.reportError(this, re);
14117 			_errHandler.recover(this, re);
14118 		}
14119 		finally {
14120 			exitRule();
14121 		}
14122 		return _localctx;
14123 	}
14124 
14125 	public static class CreateTableDefinitionContext extends ParserRuleContext {
14126 		public ColumnDefinitionContext columnDefinition() {
14127 			return getRuleContext(ColumnDefinitionContext.class,0);
14128 		}
14129 		public ComputedColumnDefinitionContext computedColumnDefinition() {
14130 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
14131 		}
14132 		public ColumnSetDefinitionContext columnSetDefinition() {
14133 			return getRuleContext(ColumnSetDefinitionContext.class,0);
14134 		}
14135 		public TableConstraintContext tableConstraint() {
14136 			return getRuleContext(TableConstraintContext.class,0);
14137 		}
14138 		public TableIndexContext tableIndex() {
14139 			return getRuleContext(TableIndexContext.class,0);
14140 		}
14141 		public CreateTableDefinitionContext(ParserRuleContext parent, int invokingState) {
14142 			super(parent, invokingState);
14143 		}
14144 		@Override public int getRuleIndex() { return RULE_createTableDefinition; }
14145 		@Override
14146 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14147 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableDefinition(this);
14148 			else return visitor.visitChildren(this);
14149 		}
14150 	}
14151 
14152 	public final CreateTableDefinitionContext createTableDefinition() throws RecognitionException {
14153 		CreateTableDefinitionContext _localctx = new CreateTableDefinitionContext(_ctx, getState());
14154 		enterRule(_localctx, 300, RULE_createTableDefinition);
14155 		try {
14156 			setState(2204);
14157 			_errHandler.sync(this);
14158 			switch ( getInterpreter().adaptivePredict(_input,147,_ctx) ) {
14159 			case 1:
14160 				enterOuterAlt(_localctx, 1);
14161 				{
14162 				setState(2199);
14163 				columnDefinition();
14164 				}
14165 				break;
14166 			case 2:
14167 				enterOuterAlt(_localctx, 2);
14168 				{
14169 				setState(2200);
14170 				computedColumnDefinition();
14171 				}
14172 				break;
14173 			case 3:
14174 				enterOuterAlt(_localctx, 3);
14175 				{
14176 				setState(2201);
14177 				columnSetDefinition();
14178 				}
14179 				break;
14180 			case 4:
14181 				enterOuterAlt(_localctx, 4);
14182 				{
14183 				setState(2202);
14184 				tableConstraint();
14185 				}
14186 				break;
14187 			case 5:
14188 				enterOuterAlt(_localctx, 5);
14189 				{
14190 				setState(2203);
14191 				tableIndex();
14192 				}
14193 				break;
14194 			}
14195 		}
14196 		catch (RecognitionException re) {
14197 			_localctx.exception = re;
14198 			_errHandler.reportError(this, re);
14199 			_errHandler.recover(this, re);
14200 		}
14201 		finally {
14202 			exitRule();
14203 		}
14204 		return _localctx;
14205 	}
14206 
14207 	public static class ColumnDefinitionContext extends ParserRuleContext {
14208 		public ColumnNameContext columnName() {
14209 			return getRuleContext(ColumnNameContext.class,0);
14210 		}
14211 		public DataTypeContext dataType() {
14212 			return getRuleContext(DataTypeContext.class,0);
14213 		}
14214 		public ColumnConstraintsContext columnConstraints() {
14215 			return getRuleContext(ColumnConstraintsContext.class,0);
14216 		}
14217 		public List<ColumnDefinitionOptionContext> columnDefinitionOption() {
14218 			return getRuleContexts(ColumnDefinitionOptionContext.class);
14219 		}
14220 		public ColumnDefinitionOptionContext columnDefinitionOption(int i) {
14221 			return getRuleContext(ColumnDefinitionOptionContext.class,i);
14222 		}
14223 		public ColumnIndexContext columnIndex() {
14224 			return getRuleContext(ColumnIndexContext.class,0);
14225 		}
14226 		public ColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
14227 			super(parent, invokingState);
14228 		}
14229 		@Override public int getRuleIndex() { return RULE_columnDefinition; }
14230 		@Override
14231 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14232 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnDefinition(this);
14233 			else return visitor.visitChildren(this);
14234 		}
14235 	}
14236 
14237 	public final ColumnDefinitionContext columnDefinition() throws RecognitionException {
14238 		ColumnDefinitionContext _localctx = new ColumnDefinitionContext(_ctx, getState());
14239 		enterRule(_localctx, 302, RULE_columnDefinition);
14240 		int _la;
14241 		try {
14242 			int _alt;
14243 			enterOuterAlt(_localctx, 1);
14244 			{
14245 			setState(2206);
14246 			columnName();
14247 			setState(2207);
14248 			dataType();
14249 			setState(2211);
14250 			_errHandler.sync(this);
14251 			_alt = getInterpreter().adaptivePredict(_input,148,_ctx);
14252 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
14253 				if ( _alt==1 ) {
14254 					{
14255 					{
14256 					setState(2208);
14257 					columnDefinitionOption();
14258 					}
14259 					} 
14260 				}
14261 				setState(2213);
14262 				_errHandler.sync(this);
14263 				_alt = getInterpreter().adaptivePredict(_input,148,_ctx);
14264 			}
14265 			setState(2214);
14266 			columnConstraints();
14267 			setState(2216);
14268 			_errHandler.sync(this);
14269 			_la = _input.LA(1);
14270 			if (_la==INDEX) {
14271 				{
14272 				setState(2215);
14273 				columnIndex();
14274 				}
14275 			}
14276 
14277 			}
14278 		}
14279 		catch (RecognitionException re) {
14280 			_localctx.exception = re;
14281 			_errHandler.reportError(this, re);
14282 			_errHandler.recover(this, re);
14283 		}
14284 		finally {
14285 			exitRule();
14286 		}
14287 		return _localctx;
14288 	}
14289 
14290 	public static class ColumnDefinitionOptionContext extends ParserRuleContext {
14291 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
14292 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
14293 		public CollationNameContext collationName() {
14294 			return getRuleContext(CollationNameContext.class,0);
14295 		}
14296 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
14297 		public TerminalNode MASKED() { return getToken(SQLServerStatementParser.MASKED, 0); }
14298 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
14299 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
14300 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
14301 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
14302 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
14303 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
14304 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
14305 		public ExprContext expr() {
14306 			return getRuleContext(ExprContext.class,0);
14307 		}
14308 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
14309 		public IgnoredIdentifierContext ignoredIdentifier() {
14310 			return getRuleContext(IgnoredIdentifierContext.class,0);
14311 		}
14312 		public TerminalNode IDENTITY() { return getToken(SQLServerStatementParser.IDENTITY, 0); }
14313 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
14314 		public TerminalNode NUMBER_(int i) {
14315 			return getToken(SQLServerStatementParser.NUMBER_, i);
14316 		}
14317 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14318 		public TerminalNode COMMA_(int i) {
14319 			return getToken(SQLServerStatementParser.COMMA_, i);
14320 		}
14321 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
14322 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
14323 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
14324 		public TerminalNode GENERATED() { return getToken(SQLServerStatementParser.GENERATED, 0); }
14325 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
14326 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
14327 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
14328 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
14329 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
14330 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
14331 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
14332 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
14333 		public TerminalNode ENCRYPTED() { return getToken(SQLServerStatementParser.ENCRYPTED, 0); }
14334 		public EncryptedOptionsContext encryptedOptions() {
14335 			return getRuleContext(EncryptedOptionsContext.class,0);
14336 		}
14337 		public List<ColumnConstraintContext> columnConstraint() {
14338 			return getRuleContexts(ColumnConstraintContext.class);
14339 		}
14340 		public ColumnConstraintContext columnConstraint(int i) {
14341 			return getRuleContext(ColumnConstraintContext.class,i);
14342 		}
14343 		public ColumnIndexContext columnIndex() {
14344 			return getRuleContext(ColumnIndexContext.class,0);
14345 		}
14346 		public ColumnDefinitionOptionContext(ParserRuleContext parent, int invokingState) {
14347 			super(parent, invokingState);
14348 		}
14349 		@Override public int getRuleIndex() { return RULE_columnDefinitionOption; }
14350 		@Override
14351 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14352 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnDefinitionOption(this);
14353 			else return visitor.visitChildren(this);
14354 		}
14355 	}
14356 
14357 	public final ColumnDefinitionOptionContext columnDefinitionOption() throws RecognitionException {
14358 		ColumnDefinitionOptionContext _localctx = new ColumnDefinitionOptionContext(_ctx, getState());
14359 		enterRule(_localctx, 304, RULE_columnDefinitionOption);
14360 		int _la;
14361 		try {
14362 			int _alt;
14363 			setState(2271);
14364 			_errHandler.sync(this);
14365 			switch ( getInterpreter().adaptivePredict(_input,155,_ctx) ) {
14366 			case 1:
14367 				enterOuterAlt(_localctx, 1);
14368 				{
14369 				setState(2218);
14370 				match(FILESTREAM);
14371 				}
14372 				break;
14373 			case 2:
14374 				enterOuterAlt(_localctx, 2);
14375 				{
14376 				setState(2219);
14377 				match(COLLATE);
14378 				setState(2220);
14379 				collationName();
14380 				}
14381 				break;
14382 			case 3:
14383 				enterOuterAlt(_localctx, 3);
14384 				{
14385 				setState(2221);
14386 				match(SPARSE);
14387 				}
14388 				break;
14389 			case 4:
14390 				enterOuterAlt(_localctx, 4);
14391 				{
14392 				setState(2222);
14393 				match(MASKED);
14394 				setState(2223);
14395 				match(WITH);
14396 				setState(2224);
14397 				match(LP_);
14398 				setState(2225);
14399 				match(FUNCTION);
14400 				setState(2226);
14401 				match(EQ_);
14402 				setState(2227);
14403 				match(STRING_);
14404 				setState(2228);
14405 				match(RP_);
14406 				}
14407 				break;
14408 			case 5:
14409 				enterOuterAlt(_localctx, 5);
14410 				{
14411 				setState(2231);
14412 				_errHandler.sync(this);
14413 				_la = _input.LA(1);
14414 				if (_la==CONSTRAINT) {
14415 					{
14416 					setState(2229);
14417 					match(CONSTRAINT);
14418 					setState(2230);
14419 					ignoredIdentifier();
14420 					}
14421 				}
14422 
14423 				setState(2233);
14424 				match(DEFAULT);
14425 				setState(2234);
14426 				expr(0);
14427 				}
14428 				break;
14429 			case 6:
14430 				enterOuterAlt(_localctx, 6);
14431 				{
14432 				setState(2235);
14433 				match(IDENTITY);
14434 				setState(2241);
14435 				_errHandler.sync(this);
14436 				_la = _input.LA(1);
14437 				if (_la==LP_) {
14438 					{
14439 					setState(2236);
14440 					match(LP_);
14441 					setState(2237);
14442 					match(NUMBER_);
14443 					setState(2238);
14444 					match(COMMA_);
14445 					setState(2239);
14446 					match(NUMBER_);
14447 					setState(2240);
14448 					match(RP_);
14449 					}
14450 				}
14451 
14452 				}
14453 				break;
14454 			case 7:
14455 				enterOuterAlt(_localctx, 7);
14456 				{
14457 				setState(2243);
14458 				match(NOT);
14459 				setState(2244);
14460 				match(FOR);
14461 				setState(2245);
14462 				match(REPLICATION);
14463 				}
14464 				break;
14465 			case 8:
14466 				enterOuterAlt(_localctx, 8);
14467 				{
14468 				setState(2246);
14469 				match(GENERATED);
14470 				setState(2247);
14471 				match(ALWAYS);
14472 				setState(2248);
14473 				match(AS);
14474 				setState(2249);
14475 				match(ROW);
14476 				setState(2250);
14477 				_la = _input.LA(1);
14478 				if ( !(_la==START || _la==END) ) {
14479 				_errHandler.recoverInline(this);
14480 				}
14481 				else {
14482 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14483 					_errHandler.reportMatch(this);
14484 					consume();
14485 				}
14486 				setState(2252);
14487 				_errHandler.sync(this);
14488 				_la = _input.LA(1);
14489 				if (_la==HIDDEN_) {
14490 					{
14491 					setState(2251);
14492 					match(HIDDEN_);
14493 					}
14494 				}
14495 
14496 				}
14497 				break;
14498 			case 9:
14499 				enterOuterAlt(_localctx, 9);
14500 				{
14501 				setState(2255);
14502 				_errHandler.sync(this);
14503 				_la = _input.LA(1);
14504 				if (_la==NOT) {
14505 					{
14506 					setState(2254);
14507 					match(NOT);
14508 					}
14509 				}
14510 
14511 				setState(2257);
14512 				match(NULL);
14513 				}
14514 				break;
14515 			case 10:
14516 				enterOuterAlt(_localctx, 10);
14517 				{
14518 				setState(2258);
14519 				match(ROWGUIDCOL);
14520 				}
14521 				break;
14522 			case 11:
14523 				enterOuterAlt(_localctx, 11);
14524 				{
14525 				setState(2259);
14526 				match(ENCRYPTED);
14527 				setState(2260);
14528 				match(WITH);
14529 				setState(2261);
14530 				encryptedOptions();
14531 				}
14532 				break;
14533 			case 12:
14534 				enterOuterAlt(_localctx, 12);
14535 				{
14536 				setState(2262);
14537 				columnConstraint();
14538 				setState(2267);
14539 				_errHandler.sync(this);
14540 				_alt = getInterpreter().adaptivePredict(_input,154,_ctx);
14541 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
14542 					if ( _alt==1 ) {
14543 						{
14544 						{
14545 						setState(2263);
14546 						match(COMMA_);
14547 						setState(2264);
14548 						columnConstraint();
14549 						}
14550 						} 
14551 					}
14552 					setState(2269);
14553 					_errHandler.sync(this);
14554 					_alt = getInterpreter().adaptivePredict(_input,154,_ctx);
14555 				}
14556 				}
14557 				break;
14558 			case 13:
14559 				enterOuterAlt(_localctx, 13);
14560 				{
14561 				setState(2270);
14562 				columnIndex();
14563 				}
14564 				break;
14565 			}
14566 		}
14567 		catch (RecognitionException re) {
14568 			_localctx.exception = re;
14569 			_errHandler.reportError(this, re);
14570 			_errHandler.recover(this, re);
14571 		}
14572 		finally {
14573 			exitRule();
14574 		}
14575 		return _localctx;
14576 	}
14577 
14578 	public static class EncryptedOptionsContext extends ParserRuleContext {
14579 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
14580 		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(SQLServerStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
14581 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
14582 		public TerminalNode EQ_(int i) {
14583 			return getToken(SQLServerStatementParser.EQ_, i);
14584 		}
14585 		public IgnoredIdentifierContext ignoredIdentifier() {
14586 			return getRuleContext(IgnoredIdentifierContext.class,0);
14587 		}
14588 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14589 		public TerminalNode COMMA_(int i) {
14590 			return getToken(SQLServerStatementParser.COMMA_, i);
14591 		}
14592 		public TerminalNode ENCRYPTION_TYPE() { return getToken(SQLServerStatementParser.ENCRYPTION_TYPE, 0); }
14593 		public TerminalNode ALGORITHM() { return getToken(SQLServerStatementParser.ALGORITHM, 0); }
14594 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
14595 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
14596 		public TerminalNode DETERMINISTIC() { return getToken(SQLServerStatementParser.DETERMINISTIC, 0); }
14597 		public TerminalNode RANDOMIZED() { return getToken(SQLServerStatementParser.RANDOMIZED, 0); }
14598 		public EncryptedOptionsContext(ParserRuleContext parent, int invokingState) {
14599 			super(parent, invokingState);
14600 		}
14601 		@Override public int getRuleIndex() { return RULE_encryptedOptions; }
14602 		@Override
14603 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14604 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEncryptedOptions(this);
14605 			else return visitor.visitChildren(this);
14606 		}
14607 	}
14608 
14609 	public final EncryptedOptionsContext encryptedOptions() throws RecognitionException {
14610 		EncryptedOptionsContext _localctx = new EncryptedOptionsContext(_ctx, getState());
14611 		enterRule(_localctx, 306, RULE_encryptedOptions);
14612 		int _la;
14613 		try {
14614 			enterOuterAlt(_localctx, 1);
14615 			{
14616 			setState(2273);
14617 			match(LP_);
14618 			setState(2274);
14619 			match(COLUMN_ENCRYPTION_KEY);
14620 			setState(2275);
14621 			match(EQ_);
14622 			setState(2276);
14623 			ignoredIdentifier();
14624 			setState(2277);
14625 			match(COMMA_);
14626 			setState(2278);
14627 			match(ENCRYPTION_TYPE);
14628 			setState(2279);
14629 			match(EQ_);
14630 			setState(2280);
14631 			_la = _input.LA(1);
14632 			if ( !(_la==DETERMINISTIC || _la==RANDOMIZED) ) {
14633 			_errHandler.recoverInline(this);
14634 			}
14635 			else {
14636 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14637 				_errHandler.reportMatch(this);
14638 				consume();
14639 			}
14640 			setState(2281);
14641 			match(COMMA_);
14642 			setState(2282);
14643 			match(ALGORITHM);
14644 			setState(2283);
14645 			match(EQ_);
14646 			setState(2284);
14647 			match(STRING_);
14648 			setState(2285);
14649 			match(RP_);
14650 			}
14651 		}
14652 		catch (RecognitionException re) {
14653 			_localctx.exception = re;
14654 			_errHandler.reportError(this, re);
14655 			_errHandler.recover(this, re);
14656 		}
14657 		finally {
14658 			exitRule();
14659 		}
14660 		return _localctx;
14661 	}
14662 
14663 	public static class ColumnConstraintContext extends ParserRuleContext {
14664 		public PrimaryKeyConstraintContext primaryKeyConstraint() {
14665 			return getRuleContext(PrimaryKeyConstraintContext.class,0);
14666 		}
14667 		public ColumnForeignKeyConstraintContext columnForeignKeyConstraint() {
14668 			return getRuleContext(ColumnForeignKeyConstraintContext.class,0);
14669 		}
14670 		public CheckConstraintContext checkConstraint() {
14671 			return getRuleContext(CheckConstraintContext.class,0);
14672 		}
14673 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
14674 		public ConstraintNameContext constraintName() {
14675 			return getRuleContext(ConstraintNameContext.class,0);
14676 		}
14677 		public ColumnConstraintContext(ParserRuleContext parent, int invokingState) {
14678 			super(parent, invokingState);
14679 		}
14680 		@Override public int getRuleIndex() { return RULE_columnConstraint; }
14681 		@Override
14682 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14683 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnConstraint(this);
14684 			else return visitor.visitChildren(this);
14685 		}
14686 	}
14687 
14688 	public final ColumnConstraintContext columnConstraint() throws RecognitionException {
14689 		ColumnConstraintContext _localctx = new ColumnConstraintContext(_ctx, getState());
14690 		enterRule(_localctx, 308, RULE_columnConstraint);
14691 		int _la;
14692 		try {
14693 			enterOuterAlt(_localctx, 1);
14694 			{
14695 			setState(2289);
14696 			_errHandler.sync(this);
14697 			_la = _input.LA(1);
14698 			if (_la==CONSTRAINT) {
14699 				{
14700 				setState(2287);
14701 				match(CONSTRAINT);
14702 				setState(2288);
14703 				constraintName();
14704 				}
14705 			}
14706 
14707 			setState(2294);
14708 			_errHandler.sync(this);
14709 			switch (_input.LA(1)) {
14710 			case PRIMARY:
14711 			case UNIQUE:
14712 			case KEY:
14713 				{
14714 				setState(2291);
14715 				primaryKeyConstraint();
14716 				}
14717 				break;
14718 			case FOREIGN:
14719 			case REFERENCES:
14720 				{
14721 				setState(2292);
14722 				columnForeignKeyConstraint();
14723 				}
14724 				break;
14725 			case CHECK:
14726 				{
14727 				setState(2293);
14728 				checkConstraint();
14729 				}
14730 				break;
14731 			default:
14732 				throw new NoViableAltException(this);
14733 			}
14734 			}
14735 		}
14736 		catch (RecognitionException re) {
14737 			_localctx.exception = re;
14738 			_errHandler.reportError(this, re);
14739 			_errHandler.recover(this, re);
14740 		}
14741 		finally {
14742 			exitRule();
14743 		}
14744 		return _localctx;
14745 	}
14746 
14747 	public static class ComputedColumnConstraintContext extends ParserRuleContext {
14748 		public PrimaryKeyConstraintContext primaryKeyConstraint() {
14749 			return getRuleContext(PrimaryKeyConstraintContext.class,0);
14750 		}
14751 		public ComputedColumnForeignKeyConstraintContext computedColumnForeignKeyConstraint() {
14752 			return getRuleContext(ComputedColumnForeignKeyConstraintContext.class,0);
14753 		}
14754 		public CheckConstraintContext checkConstraint() {
14755 			return getRuleContext(CheckConstraintContext.class,0);
14756 		}
14757 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
14758 		public ConstraintNameContext constraintName() {
14759 			return getRuleContext(ConstraintNameContext.class,0);
14760 		}
14761 		public ComputedColumnConstraintContext(ParserRuleContext parent, int invokingState) {
14762 			super(parent, invokingState);
14763 		}
14764 		@Override public int getRuleIndex() { return RULE_computedColumnConstraint; }
14765 		@Override
14766 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14767 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnConstraint(this);
14768 			else return visitor.visitChildren(this);
14769 		}
14770 	}
14771 
14772 	public final ComputedColumnConstraintContext computedColumnConstraint() throws RecognitionException {
14773 		ComputedColumnConstraintContext _localctx = new ComputedColumnConstraintContext(_ctx, getState());
14774 		enterRule(_localctx, 310, RULE_computedColumnConstraint);
14775 		int _la;
14776 		try {
14777 			enterOuterAlt(_localctx, 1);
14778 			{
14779 			setState(2298);
14780 			_errHandler.sync(this);
14781 			_la = _input.LA(1);
14782 			if (_la==CONSTRAINT) {
14783 				{
14784 				setState(2296);
14785 				match(CONSTRAINT);
14786 				setState(2297);
14787 				constraintName();
14788 				}
14789 			}
14790 
14791 			setState(2303);
14792 			_errHandler.sync(this);
14793 			switch (_input.LA(1)) {
14794 			case PRIMARY:
14795 			case UNIQUE:
14796 			case KEY:
14797 				{
14798 				setState(2300);
14799 				primaryKeyConstraint();
14800 				}
14801 				break;
14802 			case TRUNCATE:
14803 			case SCHEMA:
14804 			case FOREIGN:
14805 			case FUNCTION:
14806 			case TRIGGER:
14807 			case CAST:
14808 			case GROUP:
14809 			case LIMIT:
14810 			case OFFSET:
14811 			case SAVEPOINT:
14812 			case BOOLEAN:
14813 			case ARRAY:
14814 			case DATE:
14815 			case LOCALTIME:
14816 			case LOCALTIMESTAMP:
14817 			case QUARTER:
14818 			case WEEK:
14819 			case DAY:
14820 			case MICROSECOND:
14821 			case MAX:
14822 			case MIN:
14823 			case SUM:
14824 			case COUNT:
14825 			case AVG:
14826 			case ENABLE:
14827 			case DISABLE:
14828 			case INSTANCE:
14829 			case DO:
14830 			case DEFINER:
14831 			case SQL:
14832 			case CASCADED:
14833 			case LOCAL:
14834 			case NEXT:
14835 			case NAME:
14836 			case INTEGER:
14837 			case TYPE:
14838 			case READ_ONLY:
14839 			case DATABASE:
14840 			case DATEPART:
14841 			case PASSWORD:
14842 			case BINARY:
14843 			case HIDDEN_:
14844 			case MOD:
14845 			case PARTITION:
14846 			case PARTITIONS:
14847 			case TOP:
14848 			case ROW:
14849 			case ROWS:
14850 			case XOR:
14851 			case ALWAYS:
14852 			case ROLE:
14853 			case START:
14854 			case ALGORITHM:
14855 			case AUTO:
14856 			case BLOCKERS:
14857 			case CLUSTERED:
14858 			case NONCLUSTERED:
14859 			case COLUMNSTORE:
14860 			case CONTENT:
14861 			case YEARS:
14862 			case MONTHS:
14863 			case WEEKS:
14864 			case DAYS:
14865 			case MINUTES:
14866 			case DENY:
14867 			case DETERMINISTIC:
14868 			case DISTRIBUTION:
14869 			case DOCUMENT:
14870 			case DURABILITY:
14871 			case ENCRYPTED:
14872 			case FILESTREAM:
14873 			case FILETABLE:
14874 			case FILLFACTOR:
14875 			case FOLLOWING:
14876 			case HASH:
14877 			case HEAP:
14878 			case INBOUND:
14879 			case OUTBOUND:
14880 			case UNBOUNDED:
14881 			case INFINITE:
14882 			case LOGIN:
14883 			case MASKED:
14884 			case MAXDOP:
14885 			case MOVE:
14886 			case NOCHECK:
14887 			case OBJECT:
14888 			case OFF:
14889 			case ONLINE:
14890 			case OVER:
14891 			case PAGE:
14892 			case PAUSED:
14893 			case PERIOD:
14894 			case PERSISTED:
14895 			case PRECEDING:
14896 			case RANDOMIZED:
14897 			case RANGE:
14898 			case REBUILD:
14899 			case REPLICATE:
14900 			case REPLICATION:
14901 			case RESUMABLE:
14902 			case ROWGUIDCOL:
14903 			case SAVE:
14904 			case SELF:
14905 			case SPARSE:
14906 			case SWITCH:
14907 			case TRAN:
14908 			case TRANCOUNT:
14909 			case CONTROL:
14910 			case CONCAT:
14911 			case TAKE:
14912 			case OWNERSHIP:
14913 			case DEFINITION:
14914 			case APPLICATION:
14915 			case ASSEMBLY:
14916 			case SYMMETRIC:
14917 			case ASYMMETRIC:
14918 			case SERVER:
14919 			case RECEIVE:
14920 			case CHANGE:
14921 			case TRACE:
14922 			case TRACKING:
14923 			case RESOURCES:
14924 			case SETTINGS:
14925 			case STATE:
14926 			case AVAILABILITY:
14927 			case CREDENTIAL:
14928 			case ENDPOINT:
14929 			case EVENT:
14930 			case NOTIFICATION:
14931 			case LINKED:
14932 			case AUDIT:
14933 			case DDL:
14934 			case XML:
14935 			case IMPERSONATE:
14936 			case SECURABLES:
14937 			case AUTHENTICATE:
14938 			case EXTERNAL:
14939 			case ACCESS:
14940 			case ADMINISTER:
14941 			case BULK:
14942 			case OPERATIONS:
14943 			case UNSAFE:
14944 			case SHUTDOWN:
14945 			case SCOPED:
14946 			case CONFIGURATION:
14947 			case DATASPACE:
14948 			case SERVICE:
14949 			case CERTIFICATE:
14950 			case CONTRACT:
14951 			case ENCRYPTION:
14952 			case MASTER:
14953 			case DATA:
14954 			case SOURCE:
14955 			case FILE:
14956 			case FORMAT:
14957 			case LIBRARY:
14958 			case FULLTEXT:
14959 			case MASK:
14960 			case UNMASK:
14961 			case MESSAGE:
14962 			case REMOTE:
14963 			case BINDING:
14964 			case ROUTE:
14965 			case SECURITY:
14966 			case POLICY:
14967 			case AGGREGATE:
14968 			case QUEUE:
14969 			case RULE:
14970 			case SYNONYM:
14971 			case COLLECTION:
14972 			case SCRIPT:
14973 			case KILL:
14974 			case BACKUP:
14975 			case LOG:
14976 			case SHOWPLAN:
14977 			case SUBSCRIBE:
14978 			case QUERY:
14979 			case NOTIFICATIONS:
14980 			case CHECKPOINT:
14981 			case SEQUENCE:
14982 			case ABORT_AFTER_WAIT:
14983 			case ALLOW_PAGE_LOCKS:
14984 			case ALLOW_ROW_LOCKS:
14985 			case ALL_SPARSE_COLUMNS:
14986 			case BUCKET_COUNT:
14987 			case COLUMNSTORE_ARCHIVE:
14988 			case COLUMN_ENCRYPTION_KEY:
14989 			case COLUMN_SET:
14990 			case COMPRESSION_DELAY:
14991 			case DATABASE_DEAULT:
14992 			case DATA_COMPRESSION:
14993 			case DATA_CONSISTENCY_CHECK:
14994 			case ENCRYPTION_TYPE:
14995 			case SYSTEM_TIME:
14996 			case SYSTEM_VERSIONING:
14997 			case TEXTIMAGE_ON:
14998 			case WAIT_AT_LOW_PRIORITY:
14999 			case STATISTICS_INCREMENTAL:
15000 			case STATISTICS_NORECOMPUTE:
15001 			case ROUND_ROBIN:
15002 			case SCHEMA_AND_DATA:
15003 			case SCHEMA_ONLY:
15004 			case SORT_IN_TEMPDB:
15005 			case IGNORE_DUP_KEY:
15006 			case IMPLICIT_TRANSACTIONS:
15007 			case MAX_DURATION:
15008 			case MEMORY_OPTIMIZED:
15009 			case MIGRATION_STATE:
15010 			case PAD_INDEX:
15011 			case REMOTE_DATA_ARCHIVE:
15012 			case FILESTREAM_ON:
15013 			case FILETABLE_COLLATE_FILENAME:
15014 			case FILETABLE_DIRECTORY:
15015 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
15016 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
15017 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
15018 			case FILTER_PREDICATE:
15019 			case HISTORY_RETENTION_PERIOD:
15020 			case HISTORY_TABLE:
15021 			case LOCK_ESCALATION:
15022 			case DROP_EXISTING:
15023 			case ROW_NUMBER:
15024 			case FIRST:
15025 			case DATETIME2:
15026 			case OUTPUT:
15027 			case INSERTED:
15028 			case DELETED:
15029 			case FILENAME:
15030 			case MAXSIZE:
15031 			case FILEGROWTH:
15032 			case UNLIMITED:
15033 			case KB:
15034 			case MB:
15035 			case GB:
15036 			case TB:
15037 			case MEMORY_OPTIMIZED_DATA:
15038 			case FILEGROUP:
15039 			case NON_TRANSACTED_ACCESS:
15040 			case DB_CHAINING:
15041 			case TRUSTWORTHY:
15042 			case FORWARD_ONLY:
15043 			case KEYSET:
15044 			case FAST_FORWARD:
15045 			case SCROLL_LOCKS:
15046 			case OPTIMISTIC:
15047 			case TYPE_WARNING:
15048 			case SCHEMABINDING:
15049 			case CALLER:
15050 			case OWNER:
15051 			case SNAPSHOT:
15052 			case REPEATABLE:
15053 			case SERIALIZABLE:
15054 			case NATIVE_COMPILATION:
15055 			case VIEW_METADATA:
15056 			case INSTEAD:
15057 			case APPEND:
15058 			case INCREMENT:
15059 			case CACHE:
15060 			case MINVALUE:
15061 			case MAXVALUE:
15062 			case RESTART:
15063 			case LOB_COMPACTION:
15064 			case COMPRESS_ALL_ROW_GROUPS:
15065 			case REORGANIZE:
15066 			case RESUME:
15067 			case PAUSE:
15068 			case ABORT:
15069 			case ACCELERATED_DATABASE_RECOVERY:
15070 			case PERSISTENT_VERSION_STORE_FILEGROUP:
15071 			case IMMEDIATE:
15072 			case NO_WAIT:
15073 			case TARGET_RECOVERY_TIME:
15074 			case SECONDS:
15075 			case HONOR_BROKER_PRIORITY:
15076 			case ERROR_BROKER_CONVERSATIONS:
15077 			case NEW_BROKER:
15078 			case DISABLE_BROKER:
15079 			case ENABLE_BROKER:
15080 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
15081 			case READ_COMMITTED_SNAPSHOT:
15082 			case ALLOW_SNAPSHOT_ISOLATION:
15083 			case RECURSIVE_TRIGGERS:
15084 			case QUOTED_IDENTIFIER:
15085 			case NUMERIC_ROUNDABORT:
15086 			case CONCAT_NULL_YIELDS_NULL:
15087 			case COMPATIBILITY_LEVEL:
15088 			case ARITHABORT:
15089 			case ANSI_WARNINGS:
15090 			case ANSI_PADDING:
15091 			case ANSI_NULLS:
15092 			case ANSI_NULL_DEFAULT:
15093 			case PAGE_VERIFY:
15094 			case CHECKSUM:
15095 			case TORN_PAGE_DETECTION:
15096 			case BULK_LOGGED:
15097 			case RECOVERY:
15098 			case TOTAL_EXECUTION_CPU_TIME_MS:
15099 			case TOTAL_COMPILE_CPU_TIME_MS:
15100 			case STALE_CAPTURE_POLICY_THRESHOLD:
15101 			case EXECUTION_COUNT:
15102 			case QUERY_CAPTURE_POLICY:
15103 			case WAIT_STATS_CAPTURE_MODE:
15104 			case MAX_PLANS_PER_QUERY:
15105 			case QUERY_CAPTURE_MODE:
15106 			case SIZE_BASED_CLEANUP_MODE:
15107 			case INTERVAL_LENGTH_MINUTES:
15108 			case MAX_STORAGE_SIZE_MB:
15109 			case DATA_FLUSH_INTERVAL_SECONDS:
15110 			case CLEANUP_POLICY:
15111 			case CUSTOM:
15112 			case STALE_QUERY_THRESHOLD_DAYS:
15113 			case OPERATION_MODE:
15114 			case QUERY_STORE:
15115 			case CURSOR_DEFAULT:
15116 			case GLOBAL:
15117 			case CURSOR_CLOSE_ON_COMMIT:
15118 			case HOURS:
15119 			case CHANGE_RETENTION:
15120 			case AUTO_CLEANUP:
15121 			case CHANGE_TRACKING:
15122 			case AUTOMATIC_TUNING:
15123 			case FORCE_LAST_GOOD_PLAN:
15124 			case AUTO_UPDATE_STATISTICS_ASYNC:
15125 			case AUTO_UPDATE_STATISTICS:
15126 			case AUTO_SHRINK:
15127 			case AUTO_CREATE_STATISTICS:
15128 			case INCREMENTAL:
15129 			case AUTO_CLOSE:
15130 			case DATA_RETENTION:
15131 			case TEMPORAL_HISTORY_RETENTION:
15132 			case EDITION:
15133 			case MIXED_PAGE_ALLOCATION:
15134 			case DISABLED:
15135 			case ALLOWED:
15136 			case HADR:
15137 			case MULTI_USER:
15138 			case RESTRICTED_USER:
15139 			case SINGLE_USER:
15140 			case OFFLINE:
15141 			case EMERGENCY:
15142 			case SUSPEND:
15143 			case DATE_CORRELATION_OPTIMIZATION:
15144 			case ELASTIC_POOL:
15145 			case SERVICE_OBJECTIVE:
15146 			case DATABASE_NAME:
15147 			case ALLOW_CONNECTIONS:
15148 			case GEO:
15149 			case NAMED:
15150 			case DATEFIRST:
15151 			case BACKUP_STORAGE_REDUNDANCY:
15152 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
15153 			case SECONDARY:
15154 			case FAILOVER:
15155 			case DEFAULT_FULLTEXT_LANGUAGE:
15156 			case DEFAULT_LANGUAGE:
15157 			case INLINE:
15158 			case NESTED_TRIGGERS:
15159 			case TRANSFORM_NOISE_WORDS:
15160 			case TWO_DIGIT_YEAR_CUTOFF:
15161 			case PERSISTENT_LOG_BUFFER:
15162 			case DIRECTORY_NAME:
15163 			case DATEFORMAT:
15164 			case DELAYED_DURABILITY:
15165 			case AUTHORIZATION:
15166 			case TRANSFER:
15167 			case SEARCH:
15168 			case MEMBER:
15169 			case IDENTIFIER_:
15170 			case DELIMITED_IDENTIFIER_:
15171 				{
15172 				setState(2301);
15173 				computedColumnForeignKeyConstraint();
15174 				}
15175 				break;
15176 			case CHECK:
15177 				{
15178 				setState(2302);
15179 				checkConstraint();
15180 				}
15181 				break;
15182 			default:
15183 				throw new NoViableAltException(this);
15184 			}
15185 			}
15186 		}
15187 		catch (RecognitionException re) {
15188 			_localctx.exception = re;
15189 			_errHandler.reportError(this, re);
15190 			_errHandler.recover(this, re);
15191 		}
15192 		finally {
15193 			exitRule();
15194 		}
15195 		return _localctx;
15196 	}
15197 
15198 	public static class ComputedColumnForeignKeyConstraintContext extends ParserRuleContext {
15199 		public TableNameContext tableName() {
15200 			return getRuleContext(TableNameContext.class,0);
15201 		}
15202 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
15203 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
15204 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15205 		public ColumnNameContext columnName() {
15206 			return getRuleContext(ColumnNameContext.class,0);
15207 		}
15208 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15209 		public List<ComputedColumnForeignKeyOnActionContext> computedColumnForeignKeyOnAction() {
15210 			return getRuleContexts(ComputedColumnForeignKeyOnActionContext.class);
15211 		}
15212 		public ComputedColumnForeignKeyOnActionContext computedColumnForeignKeyOnAction(int i) {
15213 			return getRuleContext(ComputedColumnForeignKeyOnActionContext.class,i);
15214 		}
15215 		public ComputedColumnForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
15216 			super(parent, invokingState);
15217 		}
15218 		@Override public int getRuleIndex() { return RULE_computedColumnForeignKeyConstraint; }
15219 		@Override
15220 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15221 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnForeignKeyConstraint(this);
15222 			else return visitor.visitChildren(this);
15223 		}
15224 	}
15225 
15226 	public final ComputedColumnForeignKeyConstraintContext computedColumnForeignKeyConstraint() throws RecognitionException {
15227 		ComputedColumnForeignKeyConstraintContext _localctx = new ComputedColumnForeignKeyConstraintContext(_ctx, getState());
15228 		enterRule(_localctx, 312, RULE_computedColumnForeignKeyConstraint);
15229 		int _la;
15230 		try {
15231 			enterOuterAlt(_localctx, 1);
15232 			{
15233 			setState(2307);
15234 			_errHandler.sync(this);
15235 			_la = _input.LA(1);
15236 			if (_la==FOREIGN) {
15237 				{
15238 				setState(2305);
15239 				match(FOREIGN);
15240 				setState(2306);
15241 				match(KEY);
15242 				}
15243 			}
15244 
15245 			setState(2309);
15246 			tableName();
15247 			setState(2314);
15248 			_errHandler.sync(this);
15249 			switch ( getInterpreter().adaptivePredict(_input,161,_ctx) ) {
15250 			case 1:
15251 				{
15252 				setState(2310);
15253 				match(LP_);
15254 				setState(2311);
15255 				columnName();
15256 				setState(2312);
15257 				match(RP_);
15258 				}
15259 				break;
15260 			}
15261 			setState(2319);
15262 			_errHandler.sync(this);
15263 			_la = _input.LA(1);
15264 			while (_la==ON || _la==NOT) {
15265 				{
15266 				{
15267 				setState(2316);
15268 				computedColumnForeignKeyOnAction();
15269 				}
15270 				}
15271 				setState(2321);
15272 				_errHandler.sync(this);
15273 				_la = _input.LA(1);
15274 			}
15275 			}
15276 		}
15277 		catch (RecognitionException re) {
15278 			_localctx.exception = re;
15279 			_errHandler.reportError(this, re);
15280 			_errHandler.recover(this, re);
15281 		}
15282 		finally {
15283 			exitRule();
15284 		}
15285 		return _localctx;
15286 	}
15287 
15288 	public static class ComputedColumnForeignKeyOnActionContext extends ParserRuleContext {
15289 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
15290 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
15291 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
15292 		public TerminalNode ACTION() { return getToken(SQLServerStatementParser.ACTION, 0); }
15293 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
15294 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
15295 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
15296 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
15297 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
15298 		public ComputedColumnForeignKeyOnActionContext(ParserRuleContext parent, int invokingState) {
15299 			super(parent, invokingState);
15300 		}
15301 		@Override public int getRuleIndex() { return RULE_computedColumnForeignKeyOnAction; }
15302 		@Override
15303 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15304 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnForeignKeyOnAction(this);
15305 			else return visitor.visitChildren(this);
15306 		}
15307 	}
15308 
15309 	public final ComputedColumnForeignKeyOnActionContext computedColumnForeignKeyOnAction() throws RecognitionException {
15310 		ComputedColumnForeignKeyOnActionContext _localctx = new ComputedColumnForeignKeyOnActionContext(_ctx, getState());
15311 		enterRule(_localctx, 314, RULE_computedColumnForeignKeyOnAction);
15312 		try {
15313 			setState(2336);
15314 			_errHandler.sync(this);
15315 			switch ( getInterpreter().adaptivePredict(_input,164,_ctx) ) {
15316 			case 1:
15317 				enterOuterAlt(_localctx, 1);
15318 				{
15319 				setState(2322);
15320 				match(ON);
15321 				setState(2323);
15322 				match(DELETE);
15323 				setState(2327);
15324 				_errHandler.sync(this);
15325 				switch (_input.LA(1)) {
15326 				case NO:
15327 					{
15328 					setState(2324);
15329 					match(NO);
15330 					setState(2325);
15331 					match(ACTION);
15332 					}
15333 					break;
15334 				case CASCADE:
15335 					{
15336 					setState(2326);
15337 					match(CASCADE);
15338 					}
15339 					break;
15340 				default:
15341 					throw new NoViableAltException(this);
15342 				}
15343 				}
15344 				break;
15345 			case 2:
15346 				enterOuterAlt(_localctx, 2);
15347 				{
15348 				setState(2329);
15349 				match(ON);
15350 				setState(2330);
15351 				match(UPDATE);
15352 				setState(2331);
15353 				match(NO);
15354 				setState(2332);
15355 				match(ACTION);
15356 				}
15357 				break;
15358 			case 3:
15359 				enterOuterAlt(_localctx, 3);
15360 				{
15361 				setState(2333);
15362 				match(NOT);
15363 				setState(2334);
15364 				match(FOR);
15365 				setState(2335);
15366 				match(REPLICATION);
15367 				}
15368 				break;
15369 			}
15370 		}
15371 		catch (RecognitionException re) {
15372 			_localctx.exception = re;
15373 			_errHandler.reportError(this, re);
15374 			_errHandler.recover(this, re);
15375 		}
15376 		finally {
15377 			exitRule();
15378 		}
15379 		return _localctx;
15380 	}
15381 
15382 	public static class PrimaryKeyConstraintContext extends ParserRuleContext {
15383 		public PrimaryKeyContext primaryKey() {
15384 			return getRuleContext(PrimaryKeyContext.class,0);
15385 		}
15386 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
15387 		public DiskTablePrimaryKeyConstraintOptionContext diskTablePrimaryKeyConstraintOption() {
15388 			return getRuleContext(DiskTablePrimaryKeyConstraintOptionContext.class,0);
15389 		}
15390 		public MemoryTablePrimaryKeyConstraintOptionContext memoryTablePrimaryKeyConstraintOption() {
15391 			return getRuleContext(MemoryTablePrimaryKeyConstraintOptionContext.class,0);
15392 		}
15393 		public PrimaryKeyConstraintContext(ParserRuleContext parent, int invokingState) {
15394 			super(parent, invokingState);
15395 		}
15396 		@Override public int getRuleIndex() { return RULE_primaryKeyConstraint; }
15397 		@Override
15398 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15399 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyConstraint(this);
15400 			else return visitor.visitChildren(this);
15401 		}
15402 	}
15403 
15404 	public final PrimaryKeyConstraintContext primaryKeyConstraint() throws RecognitionException {
15405 		PrimaryKeyConstraintContext _localctx = new PrimaryKeyConstraintContext(_ctx, getState());
15406 		enterRule(_localctx, 316, RULE_primaryKeyConstraint);
15407 		try {
15408 			enterOuterAlt(_localctx, 1);
15409 			{
15410 			setState(2340);
15411 			_errHandler.sync(this);
15412 			switch (_input.LA(1)) {
15413 			case PRIMARY:
15414 			case KEY:
15415 				{
15416 				setState(2338);
15417 				primaryKey();
15418 				}
15419 				break;
15420 			case UNIQUE:
15421 				{
15422 				setState(2339);
15423 				match(UNIQUE);
15424 				}
15425 				break;
15426 			default:
15427 				throw new NoViableAltException(this);
15428 			}
15429 			setState(2344);
15430 			_errHandler.sync(this);
15431 			switch ( getInterpreter().adaptivePredict(_input,166,_ctx) ) {
15432 			case 1:
15433 				{
15434 				setState(2342);
15435 				diskTablePrimaryKeyConstraintOption();
15436 				}
15437 				break;
15438 			case 2:
15439 				{
15440 				setState(2343);
15441 				memoryTablePrimaryKeyConstraintOption();
15442 				}
15443 				break;
15444 			}
15445 			}
15446 		}
15447 		catch (RecognitionException re) {
15448 			_localctx.exception = re;
15449 			_errHandler.reportError(this, re);
15450 			_errHandler.recover(this, re);
15451 		}
15452 		finally {
15453 			exitRule();
15454 		}
15455 		return _localctx;
15456 	}
15457 
15458 	public static class DiskTablePrimaryKeyConstraintOptionContext extends ParserRuleContext {
15459 		public ClusterOptionContext clusterOption() {
15460 			return getRuleContext(ClusterOptionContext.class,0);
15461 		}
15462 		public PrimaryKeyWithClauseContext primaryKeyWithClause() {
15463 			return getRuleContext(PrimaryKeyWithClauseContext.class,0);
15464 		}
15465 		public PrimaryKeyOnClauseContext primaryKeyOnClause() {
15466 			return getRuleContext(PrimaryKeyOnClauseContext.class,0);
15467 		}
15468 		public DiskTablePrimaryKeyConstraintOptionContext(ParserRuleContext parent, int invokingState) {
15469 			super(parent, invokingState);
15470 		}
15471 		@Override public int getRuleIndex() { return RULE_diskTablePrimaryKeyConstraintOption; }
15472 		@Override
15473 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15474 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDiskTablePrimaryKeyConstraintOption(this);
15475 			else return visitor.visitChildren(this);
15476 		}
15477 	}
15478 
15479 	public final DiskTablePrimaryKeyConstraintOptionContext diskTablePrimaryKeyConstraintOption() throws RecognitionException {
15480 		DiskTablePrimaryKeyConstraintOptionContext _localctx = new DiskTablePrimaryKeyConstraintOptionContext(_ctx, getState());
15481 		enterRule(_localctx, 318, RULE_diskTablePrimaryKeyConstraintOption);
15482 		int _la;
15483 		try {
15484 			enterOuterAlt(_localctx, 1);
15485 			{
15486 			setState(2347);
15487 			_errHandler.sync(this);
15488 			_la = _input.LA(1);
15489 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
15490 				{
15491 				setState(2346);
15492 				clusterOption();
15493 				}
15494 			}
15495 
15496 			setState(2350);
15497 			_errHandler.sync(this);
15498 			switch ( getInterpreter().adaptivePredict(_input,168,_ctx) ) {
15499 			case 1:
15500 				{
15501 				setState(2349);
15502 				primaryKeyWithClause();
15503 				}
15504 				break;
15505 			}
15506 			setState(2353);
15507 			_errHandler.sync(this);
15508 			_la = _input.LA(1);
15509 			if (_la==ON) {
15510 				{
15511 				setState(2352);
15512 				primaryKeyOnClause();
15513 				}
15514 			}
15515 
15516 			}
15517 		}
15518 		catch (RecognitionException re) {
15519 			_localctx.exception = re;
15520 			_errHandler.reportError(this, re);
15521 			_errHandler.recover(this, re);
15522 		}
15523 		finally {
15524 			exitRule();
15525 		}
15526 		return _localctx;
15527 	}
15528 
15529 	public static class ClusterOptionContext extends ParserRuleContext {
15530 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
15531 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
15532 		public ClusterOptionContext(ParserRuleContext parent, int invokingState) {
15533 			super(parent, invokingState);
15534 		}
15535 		@Override public int getRuleIndex() { return RULE_clusterOption; }
15536 		@Override
15537 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15538 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClusterOption(this);
15539 			else return visitor.visitChildren(this);
15540 		}
15541 	}
15542 
15543 	public final ClusterOptionContext clusterOption() throws RecognitionException {
15544 		ClusterOptionContext _localctx = new ClusterOptionContext(_ctx, getState());
15545 		enterRule(_localctx, 320, RULE_clusterOption);
15546 		int _la;
15547 		try {
15548 			enterOuterAlt(_localctx, 1);
15549 			{
15550 			setState(2355);
15551 			_la = _input.LA(1);
15552 			if ( !(_la==CLUSTERED || _la==NONCLUSTERED) ) {
15553 			_errHandler.recoverInline(this);
15554 			}
15555 			else {
15556 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15557 				_errHandler.reportMatch(this);
15558 				consume();
15559 			}
15560 			}
15561 		}
15562 		catch (RecognitionException re) {
15563 			_localctx.exception = re;
15564 			_errHandler.reportError(this, re);
15565 			_errHandler.recover(this, re);
15566 		}
15567 		finally {
15568 			exitRule();
15569 		}
15570 		return _localctx;
15571 	}
15572 
15573 	public static class PrimaryKeyWithClauseContext extends ParserRuleContext {
15574 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
15575 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
15576 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
15577 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
15578 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15579 		public List<IndexOptionContext> indexOption() {
15580 			return getRuleContexts(IndexOptionContext.class);
15581 		}
15582 		public IndexOptionContext indexOption(int i) {
15583 			return getRuleContext(IndexOptionContext.class,i);
15584 		}
15585 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15586 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15587 		public TerminalNode COMMA_(int i) {
15588 			return getToken(SQLServerStatementParser.COMMA_, i);
15589 		}
15590 		public PrimaryKeyWithClauseContext(ParserRuleContext parent, int invokingState) {
15591 			super(parent, invokingState);
15592 		}
15593 		@Override public int getRuleIndex() { return RULE_primaryKeyWithClause; }
15594 		@Override
15595 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15596 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyWithClause(this);
15597 			else return visitor.visitChildren(this);
15598 		}
15599 	}
15600 
15601 	public final PrimaryKeyWithClauseContext primaryKeyWithClause() throws RecognitionException {
15602 		PrimaryKeyWithClauseContext _localctx = new PrimaryKeyWithClauseContext(_ctx, getState());
15603 		enterRule(_localctx, 322, RULE_primaryKeyWithClause);
15604 		int _la;
15605 		try {
15606 			enterOuterAlt(_localctx, 1);
15607 			{
15608 			setState(2357);
15609 			match(WITH);
15610 			setState(2372);
15611 			_errHandler.sync(this);
15612 			switch (_input.LA(1)) {
15613 			case FILLFACTOR:
15614 				{
15615 				setState(2358);
15616 				match(FILLFACTOR);
15617 				setState(2359);
15618 				match(EQ_);
15619 				setState(2360);
15620 				match(NUMBER_);
15621 				}
15622 				break;
15623 			case LP_:
15624 				{
15625 				setState(2361);
15626 				match(LP_);
15627 				setState(2362);
15628 				indexOption();
15629 				setState(2367);
15630 				_errHandler.sync(this);
15631 				_la = _input.LA(1);
15632 				while (_la==COMMA_) {
15633 					{
15634 					{
15635 					setState(2363);
15636 					match(COMMA_);
15637 					setState(2364);
15638 					indexOption();
15639 					}
15640 					}
15641 					setState(2369);
15642 					_errHandler.sync(this);
15643 					_la = _input.LA(1);
15644 				}
15645 				setState(2370);
15646 				match(RP_);
15647 				}
15648 				break;
15649 			default:
15650 				throw new NoViableAltException(this);
15651 			}
15652 			}
15653 		}
15654 		catch (RecognitionException re) {
15655 			_localctx.exception = re;
15656 			_errHandler.reportError(this, re);
15657 			_errHandler.recover(this, re);
15658 		}
15659 		finally {
15660 			exitRule();
15661 		}
15662 		return _localctx;
15663 	}
15664 
15665 	public static class PrimaryKeyOnClauseContext extends ParserRuleContext {
15666 		public OnSchemaColumnContext onSchemaColumn() {
15667 			return getRuleContext(OnSchemaColumnContext.class,0);
15668 		}
15669 		public OnFileGroupContext onFileGroup() {
15670 			return getRuleContext(OnFileGroupContext.class,0);
15671 		}
15672 		public OnStringContext onString() {
15673 			return getRuleContext(OnStringContext.class,0);
15674 		}
15675 		public PrimaryKeyOnClauseContext(ParserRuleContext parent, int invokingState) {
15676 			super(parent, invokingState);
15677 		}
15678 		@Override public int getRuleIndex() { return RULE_primaryKeyOnClause; }
15679 		@Override
15680 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15681 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyOnClause(this);
15682 			else return visitor.visitChildren(this);
15683 		}
15684 	}
15685 
15686 	public final PrimaryKeyOnClauseContext primaryKeyOnClause() throws RecognitionException {
15687 		PrimaryKeyOnClauseContext _localctx = new PrimaryKeyOnClauseContext(_ctx, getState());
15688 		enterRule(_localctx, 324, RULE_primaryKeyOnClause);
15689 		try {
15690 			setState(2377);
15691 			_errHandler.sync(this);
15692 			switch ( getInterpreter().adaptivePredict(_input,172,_ctx) ) {
15693 			case 1:
15694 				enterOuterAlt(_localctx, 1);
15695 				{
15696 				setState(2374);
15697 				onSchemaColumn();
15698 				}
15699 				break;
15700 			case 2:
15701 				enterOuterAlt(_localctx, 2);
15702 				{
15703 				setState(2375);
15704 				onFileGroup();
15705 				}
15706 				break;
15707 			case 3:
15708 				enterOuterAlt(_localctx, 3);
15709 				{
15710 				setState(2376);
15711 				onString();
15712 				}
15713 				break;
15714 			}
15715 		}
15716 		catch (RecognitionException re) {
15717 			_localctx.exception = re;
15718 			_errHandler.reportError(this, re);
15719 			_errHandler.recover(this, re);
15720 		}
15721 		finally {
15722 			exitRule();
15723 		}
15724 		return _localctx;
15725 	}
15726 
15727 	public static class OnSchemaColumnContext extends ParserRuleContext {
15728 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
15729 		public SchemaNameContext schemaName() {
15730 			return getRuleContext(SchemaNameContext.class,0);
15731 		}
15732 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15733 		public ColumnNameContext columnName() {
15734 			return getRuleContext(ColumnNameContext.class,0);
15735 		}
15736 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15737 		public OnSchemaColumnContext(ParserRuleContext parent, int invokingState) {
15738 			super(parent, invokingState);
15739 		}
15740 		@Override public int getRuleIndex() { return RULE_onSchemaColumn; }
15741 		@Override
15742 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15743 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnSchemaColumn(this);
15744 			else return visitor.visitChildren(this);
15745 		}
15746 	}
15747 
15748 	public final OnSchemaColumnContext onSchemaColumn() throws RecognitionException {
15749 		OnSchemaColumnContext _localctx = new OnSchemaColumnContext(_ctx, getState());
15750 		enterRule(_localctx, 326, RULE_onSchemaColumn);
15751 		try {
15752 			enterOuterAlt(_localctx, 1);
15753 			{
15754 			setState(2379);
15755 			match(ON);
15756 			setState(2380);
15757 			schemaName();
15758 			setState(2381);
15759 			match(LP_);
15760 			setState(2382);
15761 			columnName();
15762 			setState(2383);
15763 			match(RP_);
15764 			}
15765 		}
15766 		catch (RecognitionException re) {
15767 			_localctx.exception = re;
15768 			_errHandler.reportError(this, re);
15769 			_errHandler.recover(this, re);
15770 		}
15771 		finally {
15772 			exitRule();
15773 		}
15774 		return _localctx;
15775 	}
15776 
15777 	public static class OnFileGroupContext extends ParserRuleContext {
15778 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
15779 		public IgnoredIdentifierContext ignoredIdentifier() {
15780 			return getRuleContext(IgnoredIdentifierContext.class,0);
15781 		}
15782 		public OnFileGroupContext(ParserRuleContext parent, int invokingState) {
15783 			super(parent, invokingState);
15784 		}
15785 		@Override public int getRuleIndex() { return RULE_onFileGroup; }
15786 		@Override
15787 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15788 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnFileGroup(this);
15789 			else return visitor.visitChildren(this);
15790 		}
15791 	}
15792 
15793 	public final OnFileGroupContext onFileGroup() throws RecognitionException {
15794 		OnFileGroupContext _localctx = new OnFileGroupContext(_ctx, getState());
15795 		enterRule(_localctx, 328, RULE_onFileGroup);
15796 		try {
15797 			enterOuterAlt(_localctx, 1);
15798 			{
15799 			setState(2385);
15800 			match(ON);
15801 			setState(2386);
15802 			ignoredIdentifier();
15803 			}
15804 		}
15805 		catch (RecognitionException re) {
15806 			_localctx.exception = re;
15807 			_errHandler.reportError(this, re);
15808 			_errHandler.recover(this, re);
15809 		}
15810 		finally {
15811 			exitRule();
15812 		}
15813 		return _localctx;
15814 	}
15815 
15816 	public static class OnStringContext extends ParserRuleContext {
15817 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
15818 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
15819 		public OnStringContext(ParserRuleContext parent, int invokingState) {
15820 			super(parent, invokingState);
15821 		}
15822 		@Override public int getRuleIndex() { return RULE_onString; }
15823 		@Override
15824 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15825 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnString(this);
15826 			else return visitor.visitChildren(this);
15827 		}
15828 	}
15829 
15830 	public final OnStringContext onString() throws RecognitionException {
15831 		OnStringContext _localctx = new OnStringContext(_ctx, getState());
15832 		enterRule(_localctx, 330, RULE_onString);
15833 		try {
15834 			enterOuterAlt(_localctx, 1);
15835 			{
15836 			setState(2388);
15837 			match(ON);
15838 			setState(2389);
15839 			match(STRING_);
15840 			}
15841 		}
15842 		catch (RecognitionException re) {
15843 			_localctx.exception = re;
15844 			_errHandler.reportError(this, re);
15845 			_errHandler.recover(this, re);
15846 		}
15847 		finally {
15848 			exitRule();
15849 		}
15850 		return _localctx;
15851 	}
15852 
15853 	public static class MemoryTablePrimaryKeyConstraintOptionContext extends ParserRuleContext {
15854 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
15855 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
15856 		public WithBucketContext withBucket() {
15857 			return getRuleContext(WithBucketContext.class,0);
15858 		}
15859 		public MemoryTablePrimaryKeyConstraintOptionContext(ParserRuleContext parent, int invokingState) {
15860 			super(parent, invokingState);
15861 		}
15862 		@Override public int getRuleIndex() { return RULE_memoryTablePrimaryKeyConstraintOption; }
15863 		@Override
15864 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15865 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMemoryTablePrimaryKeyConstraintOption(this);
15866 			else return visitor.visitChildren(this);
15867 		}
15868 	}
15869 
15870 	public final MemoryTablePrimaryKeyConstraintOptionContext memoryTablePrimaryKeyConstraintOption() throws RecognitionException {
15871 		MemoryTablePrimaryKeyConstraintOptionContext _localctx = new MemoryTablePrimaryKeyConstraintOptionContext(_ctx, getState());
15872 		enterRule(_localctx, 332, RULE_memoryTablePrimaryKeyConstraintOption);
15873 		try {
15874 			setState(2397);
15875 			_errHandler.sync(this);
15876 			switch ( getInterpreter().adaptivePredict(_input,174,_ctx) ) {
15877 			case 1:
15878 				enterOuterAlt(_localctx, 1);
15879 				{
15880 				setState(2391);
15881 				match(NONCLUSTERED);
15882 				}
15883 				break;
15884 			case 2:
15885 				enterOuterAlt(_localctx, 2);
15886 				{
15887 				setState(2392);
15888 				match(NONCLUSTERED);
15889 				setState(2393);
15890 				match(HASH);
15891 				setState(2395);
15892 				_errHandler.sync(this);
15893 				switch ( getInterpreter().adaptivePredict(_input,173,_ctx) ) {
15894 				case 1:
15895 					{
15896 					setState(2394);
15897 					withBucket();
15898 					}
15899 					break;
15900 				}
15901 				}
15902 				break;
15903 			}
15904 		}
15905 		catch (RecognitionException re) {
15906 			_localctx.exception = re;
15907 			_errHandler.reportError(this, re);
15908 			_errHandler.recover(this, re);
15909 		}
15910 		finally {
15911 			exitRule();
15912 		}
15913 		return _localctx;
15914 	}
15915 
15916 	public static class WithBucketContext extends ParserRuleContext {
15917 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
15918 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15919 		public TerminalNode BUCKET_COUNT() { return getToken(SQLServerStatementParser.BUCKET_COUNT, 0); }
15920 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
15921 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
15922 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15923 		public WithBucketContext(ParserRuleContext parent, int invokingState) {
15924 			super(parent, invokingState);
15925 		}
15926 		@Override public int getRuleIndex() { return RULE_withBucket; }
15927 		@Override
15928 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15929 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithBucket(this);
15930 			else return visitor.visitChildren(this);
15931 		}
15932 	}
15933 
15934 	public final WithBucketContext withBucket() throws RecognitionException {
15935 		WithBucketContext _localctx = new WithBucketContext(_ctx, getState());
15936 		enterRule(_localctx, 334, RULE_withBucket);
15937 		try {
15938 			enterOuterAlt(_localctx, 1);
15939 			{
15940 			setState(2399);
15941 			match(WITH);
15942 			setState(2400);
15943 			match(LP_);
15944 			setState(2401);
15945 			match(BUCKET_COUNT);
15946 			setState(2402);
15947 			match(EQ_);
15948 			setState(2403);
15949 			match(NUMBER_);
15950 			setState(2404);
15951 			match(RP_);
15952 			}
15953 		}
15954 		catch (RecognitionException re) {
15955 			_localctx.exception = re;
15956 			_errHandler.reportError(this, re);
15957 			_errHandler.recover(this, re);
15958 		}
15959 		finally {
15960 			exitRule();
15961 		}
15962 		return _localctx;
15963 	}
15964 
15965 	public static class ColumnForeignKeyConstraintContext extends ParserRuleContext {
15966 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
15967 		public TableNameContext tableName() {
15968 			return getRuleContext(TableNameContext.class,0);
15969 		}
15970 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
15971 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
15972 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15973 		public ColumnNameContext columnName() {
15974 			return getRuleContext(ColumnNameContext.class,0);
15975 		}
15976 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15977 		public List<ForeignKeyOnActionContext> foreignKeyOnAction() {
15978 			return getRuleContexts(ForeignKeyOnActionContext.class);
15979 		}
15980 		public ForeignKeyOnActionContext foreignKeyOnAction(int i) {
15981 			return getRuleContext(ForeignKeyOnActionContext.class,i);
15982 		}
15983 		public ColumnForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
15984 			super(parent, invokingState);
15985 		}
15986 		@Override public int getRuleIndex() { return RULE_columnForeignKeyConstraint; }
15987 		@Override
15988 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15989 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnForeignKeyConstraint(this);
15990 			else return visitor.visitChildren(this);
15991 		}
15992 	}
15993 
15994 	public final ColumnForeignKeyConstraintContext columnForeignKeyConstraint() throws RecognitionException {
15995 		ColumnForeignKeyConstraintContext _localctx = new ColumnForeignKeyConstraintContext(_ctx, getState());
15996 		enterRule(_localctx, 336, RULE_columnForeignKeyConstraint);
15997 		int _la;
15998 		try {
15999 			int _alt;
16000 			enterOuterAlt(_localctx, 1);
16001 			{
16002 			setState(2408);
16003 			_errHandler.sync(this);
16004 			_la = _input.LA(1);
16005 			if (_la==FOREIGN) {
16006 				{
16007 				setState(2406);
16008 				match(FOREIGN);
16009 				setState(2407);
16010 				match(KEY);
16011 				}
16012 			}
16013 
16014 			setState(2410);
16015 			match(REFERENCES);
16016 			setState(2411);
16017 			tableName();
16018 			setState(2416);
16019 			_errHandler.sync(this);
16020 			switch ( getInterpreter().adaptivePredict(_input,176,_ctx) ) {
16021 			case 1:
16022 				{
16023 				setState(2412);
16024 				match(LP_);
16025 				setState(2413);
16026 				columnName();
16027 				setState(2414);
16028 				match(RP_);
16029 				}
16030 				break;
16031 			}
16032 			setState(2421);
16033 			_errHandler.sync(this);
16034 			_alt = getInterpreter().adaptivePredict(_input,177,_ctx);
16035 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
16036 				if ( _alt==1 ) {
16037 					{
16038 					{
16039 					setState(2418);
16040 					foreignKeyOnAction();
16041 					}
16042 					} 
16043 				}
16044 				setState(2423);
16045 				_errHandler.sync(this);
16046 				_alt = getInterpreter().adaptivePredict(_input,177,_ctx);
16047 			}
16048 			}
16049 		}
16050 		catch (RecognitionException re) {
16051 			_localctx.exception = re;
16052 			_errHandler.reportError(this, re);
16053 			_errHandler.recover(this, re);
16054 		}
16055 		finally {
16056 			exitRule();
16057 		}
16058 		return _localctx;
16059 	}
16060 
16061 	public static class ForeignKeyOnActionContext extends ParserRuleContext {
16062 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
16063 		public ForeignKeyOnContext foreignKeyOn() {
16064 			return getRuleContext(ForeignKeyOnContext.class,0);
16065 		}
16066 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
16067 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
16068 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
16069 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
16070 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
16071 		public ForeignKeyOnActionContext(ParserRuleContext parent, int invokingState) {
16072 			super(parent, invokingState);
16073 		}
16074 		@Override public int getRuleIndex() { return RULE_foreignKeyOnAction; }
16075 		@Override
16076 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16077 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForeignKeyOnAction(this);
16078 			else return visitor.visitChildren(this);
16079 		}
16080 	}
16081 
16082 	public final ForeignKeyOnActionContext foreignKeyOnAction() throws RecognitionException {
16083 		ForeignKeyOnActionContext _localctx = new ForeignKeyOnActionContext(_ctx, getState());
16084 		enterRule(_localctx, 338, RULE_foreignKeyOnAction);
16085 		int _la;
16086 		try {
16087 			setState(2430);
16088 			_errHandler.sync(this);
16089 			switch (_input.LA(1)) {
16090 			case ON:
16091 				enterOuterAlt(_localctx, 1);
16092 				{
16093 				setState(2424);
16094 				match(ON);
16095 				setState(2425);
16096 				_la = _input.LA(1);
16097 				if ( !(_la==UPDATE || _la==DELETE) ) {
16098 				_errHandler.recoverInline(this);
16099 				}
16100 				else {
16101 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16102 					_errHandler.reportMatch(this);
16103 					consume();
16104 				}
16105 				setState(2426);
16106 				foreignKeyOn();
16107 				}
16108 				break;
16109 			case NOT:
16110 				enterOuterAlt(_localctx, 2);
16111 				{
16112 				setState(2427);
16113 				match(NOT);
16114 				setState(2428);
16115 				match(FOR);
16116 				setState(2429);
16117 				match(REPLICATION);
16118 				}
16119 				break;
16120 			default:
16121 				throw new NoViableAltException(this);
16122 			}
16123 		}
16124 		catch (RecognitionException re) {
16125 			_localctx.exception = re;
16126 			_errHandler.reportError(this, re);
16127 			_errHandler.recover(this, re);
16128 		}
16129 		finally {
16130 			exitRule();
16131 		}
16132 		return _localctx;
16133 	}
16134 
16135 	public static class ForeignKeyOnContext extends ParserRuleContext {
16136 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
16137 		public TerminalNode ACTION() { return getToken(SQLServerStatementParser.ACTION, 0); }
16138 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
16139 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
16140 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
16141 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
16142 		public ForeignKeyOnContext(ParserRuleContext parent, int invokingState) {
16143 			super(parent, invokingState);
16144 		}
16145 		@Override public int getRuleIndex() { return RULE_foreignKeyOn; }
16146 		@Override
16147 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16148 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForeignKeyOn(this);
16149 			else return visitor.visitChildren(this);
16150 		}
16151 	}
16152 
16153 	public final ForeignKeyOnContext foreignKeyOn() throws RecognitionException {
16154 		ForeignKeyOnContext _localctx = new ForeignKeyOnContext(_ctx, getState());
16155 		enterRule(_localctx, 340, RULE_foreignKeyOn);
16156 		int _la;
16157 		try {
16158 			setState(2437);
16159 			_errHandler.sync(this);
16160 			switch (_input.LA(1)) {
16161 			case NO:
16162 				enterOuterAlt(_localctx, 1);
16163 				{
16164 				setState(2432);
16165 				match(NO);
16166 				setState(2433);
16167 				match(ACTION);
16168 				}
16169 				break;
16170 			case CASCADE:
16171 				enterOuterAlt(_localctx, 2);
16172 				{
16173 				setState(2434);
16174 				match(CASCADE);
16175 				}
16176 				break;
16177 			case SET:
16178 				enterOuterAlt(_localctx, 3);
16179 				{
16180 				setState(2435);
16181 				match(SET);
16182 				setState(2436);
16183 				_la = _input.LA(1);
16184 				if ( !(_la==NULL || _la==DEFAULT) ) {
16185 				_errHandler.recoverInline(this);
16186 				}
16187 				else {
16188 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16189 					_errHandler.reportMatch(this);
16190 					consume();
16191 				}
16192 				}
16193 				break;
16194 			default:
16195 				throw new NoViableAltException(this);
16196 			}
16197 		}
16198 		catch (RecognitionException re) {
16199 			_localctx.exception = re;
16200 			_errHandler.reportError(this, re);
16201 			_errHandler.recover(this, re);
16202 		}
16203 		finally {
16204 			exitRule();
16205 		}
16206 		return _localctx;
16207 	}
16208 
16209 	public static class CheckConstraintContext extends ParserRuleContext {
16210 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
16211 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16212 		public ExprContext expr() {
16213 			return getRuleContext(ExprContext.class,0);
16214 		}
16215 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16216 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
16217 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
16218 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
16219 		public CheckConstraintContext(ParserRuleContext parent, int invokingState) {
16220 			super(parent, invokingState);
16221 		}
16222 		@Override public int getRuleIndex() { return RULE_checkConstraint; }
16223 		@Override
16224 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16225 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCheckConstraint(this);
16226 			else return visitor.visitChildren(this);
16227 		}
16228 	}
16229 
16230 	public final CheckConstraintContext checkConstraint() throws RecognitionException {
16231 		CheckConstraintContext _localctx = new CheckConstraintContext(_ctx, getState());
16232 		enterRule(_localctx, 342, RULE_checkConstraint);
16233 		int _la;
16234 		try {
16235 			enterOuterAlt(_localctx, 1);
16236 			{
16237 			setState(2439);
16238 			match(CHECK);
16239 			setState(2443);
16240 			_errHandler.sync(this);
16241 			_la = _input.LA(1);
16242 			if (_la==NOT) {
16243 				{
16244 				setState(2440);
16245 				match(NOT);
16246 				setState(2441);
16247 				match(FOR);
16248 				setState(2442);
16249 				match(REPLICATION);
16250 				}
16251 			}
16252 
16253 			setState(2445);
16254 			match(LP_);
16255 			setState(2446);
16256 			expr(0);
16257 			setState(2447);
16258 			match(RP_);
16259 			}
16260 		}
16261 		catch (RecognitionException re) {
16262 			_localctx.exception = re;
16263 			_errHandler.reportError(this, re);
16264 			_errHandler.recover(this, re);
16265 		}
16266 		finally {
16267 			exitRule();
16268 		}
16269 		return _localctx;
16270 	}
16271 
16272 	public static class ColumnIndexContext extends ParserRuleContext {
16273 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
16274 		public IndexNameContext indexName() {
16275 			return getRuleContext(IndexNameContext.class,0);
16276 		}
16277 		public ClusterOptionContext clusterOption() {
16278 			return getRuleContext(ClusterOptionContext.class,0);
16279 		}
16280 		public WithIndexOptionContext withIndexOption() {
16281 			return getRuleContext(WithIndexOptionContext.class,0);
16282 		}
16283 		public IndexOnClauseContext indexOnClause() {
16284 			return getRuleContext(IndexOnClauseContext.class,0);
16285 		}
16286 		public FileStreamOnContext fileStreamOn() {
16287 			return getRuleContext(FileStreamOnContext.class,0);
16288 		}
16289 		public ColumnIndexContext(ParserRuleContext parent, int invokingState) {
16290 			super(parent, invokingState);
16291 		}
16292 		@Override public int getRuleIndex() { return RULE_columnIndex; }
16293 		@Override
16294 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16295 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnIndex(this);
16296 			else return visitor.visitChildren(this);
16297 		}
16298 	}
16299 
16300 	public final ColumnIndexContext columnIndex() throws RecognitionException {
16301 		ColumnIndexContext _localctx = new ColumnIndexContext(_ctx, getState());
16302 		enterRule(_localctx, 344, RULE_columnIndex);
16303 		int _la;
16304 		try {
16305 			enterOuterAlt(_localctx, 1);
16306 			{
16307 			setState(2449);
16308 			match(INDEX);
16309 			setState(2450);
16310 			indexName();
16311 			setState(2452);
16312 			_errHandler.sync(this);
16313 			_la = _input.LA(1);
16314 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
16315 				{
16316 				setState(2451);
16317 				clusterOption();
16318 				}
16319 			}
16320 
16321 			setState(2455);
16322 			_errHandler.sync(this);
16323 			switch ( getInterpreter().adaptivePredict(_input,182,_ctx) ) {
16324 			case 1:
16325 				{
16326 				setState(2454);
16327 				withIndexOption();
16328 				}
16329 				break;
16330 			}
16331 			setState(2458);
16332 			_errHandler.sync(this);
16333 			_la = _input.LA(1);
16334 			if (_la==ON) {
16335 				{
16336 				setState(2457);
16337 				indexOnClause();
16338 				}
16339 			}
16340 
16341 			setState(2461);
16342 			_errHandler.sync(this);
16343 			_la = _input.LA(1);
16344 			if (_la==FILESTREAM_ON) {
16345 				{
16346 				setState(2460);
16347 				fileStreamOn();
16348 				}
16349 			}
16350 
16351 			}
16352 		}
16353 		catch (RecognitionException re) {
16354 			_localctx.exception = re;
16355 			_errHandler.reportError(this, re);
16356 			_errHandler.recover(this, re);
16357 		}
16358 		finally {
16359 			exitRule();
16360 		}
16361 		return _localctx;
16362 	}
16363 
16364 	public static class WithIndexOptionContext extends ParserRuleContext {
16365 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
16366 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16367 		public List<IndexOptionContext> indexOption() {
16368 			return getRuleContexts(IndexOptionContext.class);
16369 		}
16370 		public IndexOptionContext indexOption(int i) {
16371 			return getRuleContext(IndexOptionContext.class,i);
16372 		}
16373 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16374 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
16375 		public TerminalNode COMMA_(int i) {
16376 			return getToken(SQLServerStatementParser.COMMA_, i);
16377 		}
16378 		public WithIndexOptionContext(ParserRuleContext parent, int invokingState) {
16379 			super(parent, invokingState);
16380 		}
16381 		@Override public int getRuleIndex() { return RULE_withIndexOption; }
16382 		@Override
16383 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16384 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithIndexOption(this);
16385 			else return visitor.visitChildren(this);
16386 		}
16387 	}
16388 
16389 	public final WithIndexOptionContext withIndexOption() throws RecognitionException {
16390 		WithIndexOptionContext _localctx = new WithIndexOptionContext(_ctx, getState());
16391 		enterRule(_localctx, 346, RULE_withIndexOption);
16392 		int _la;
16393 		try {
16394 			enterOuterAlt(_localctx, 1);
16395 			{
16396 			setState(2463);
16397 			match(WITH);
16398 			setState(2464);
16399 			match(LP_);
16400 			setState(2465);
16401 			indexOption();
16402 			setState(2470);
16403 			_errHandler.sync(this);
16404 			_la = _input.LA(1);
16405 			while (_la==COMMA_) {
16406 				{
16407 				{
16408 				setState(2466);
16409 				match(COMMA_);
16410 				setState(2467);
16411 				indexOption();
16412 				}
16413 				}
16414 				setState(2472);
16415 				_errHandler.sync(this);
16416 				_la = _input.LA(1);
16417 			}
16418 			setState(2473);
16419 			match(RP_);
16420 			}
16421 		}
16422 		catch (RecognitionException re) {
16423 			_localctx.exception = re;
16424 			_errHandler.reportError(this, re);
16425 			_errHandler.recover(this, re);
16426 		}
16427 		finally {
16428 			exitRule();
16429 		}
16430 		return _localctx;
16431 	}
16432 
16433 	public static class IndexOnClauseContext extends ParserRuleContext {
16434 		public OnSchemaColumnContext onSchemaColumn() {
16435 			return getRuleContext(OnSchemaColumnContext.class,0);
16436 		}
16437 		public OnFileGroupContext onFileGroup() {
16438 			return getRuleContext(OnFileGroupContext.class,0);
16439 		}
16440 		public OnDefaultContext onDefault() {
16441 			return getRuleContext(OnDefaultContext.class,0);
16442 		}
16443 		public IndexOnClauseContext(ParserRuleContext parent, int invokingState) {
16444 			super(parent, invokingState);
16445 		}
16446 		@Override public int getRuleIndex() { return RULE_indexOnClause; }
16447 		@Override
16448 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16449 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOnClause(this);
16450 			else return visitor.visitChildren(this);
16451 		}
16452 	}
16453 
16454 	public final IndexOnClauseContext indexOnClause() throws RecognitionException {
16455 		IndexOnClauseContext _localctx = new IndexOnClauseContext(_ctx, getState());
16456 		enterRule(_localctx, 348, RULE_indexOnClause);
16457 		try {
16458 			setState(2478);
16459 			_errHandler.sync(this);
16460 			switch ( getInterpreter().adaptivePredict(_input,186,_ctx) ) {
16461 			case 1:
16462 				enterOuterAlt(_localctx, 1);
16463 				{
16464 				setState(2475);
16465 				onSchemaColumn();
16466 				}
16467 				break;
16468 			case 2:
16469 				enterOuterAlt(_localctx, 2);
16470 				{
16471 				setState(2476);
16472 				onFileGroup();
16473 				}
16474 				break;
16475 			case 3:
16476 				enterOuterAlt(_localctx, 3);
16477 				{
16478 				setState(2477);
16479 				onDefault();
16480 				}
16481 				break;
16482 			}
16483 		}
16484 		catch (RecognitionException re) {
16485 			_localctx.exception = re;
16486 			_errHandler.reportError(this, re);
16487 			_errHandler.recover(this, re);
16488 		}
16489 		finally {
16490 			exitRule();
16491 		}
16492 		return _localctx;
16493 	}
16494 
16495 	public static class OnDefaultContext extends ParserRuleContext {
16496 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
16497 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
16498 		public OnDefaultContext(ParserRuleContext parent, int invokingState) {
16499 			super(parent, invokingState);
16500 		}
16501 		@Override public int getRuleIndex() { return RULE_onDefault; }
16502 		@Override
16503 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16504 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnDefault(this);
16505 			else return visitor.visitChildren(this);
16506 		}
16507 	}
16508 
16509 	public final OnDefaultContext onDefault() throws RecognitionException {
16510 		OnDefaultContext _localctx = new OnDefaultContext(_ctx, getState());
16511 		enterRule(_localctx, 350, RULE_onDefault);
16512 		try {
16513 			enterOuterAlt(_localctx, 1);
16514 			{
16515 			setState(2480);
16516 			match(ON);
16517 			setState(2481);
16518 			match(DEFAULT);
16519 			}
16520 		}
16521 		catch (RecognitionException re) {
16522 			_localctx.exception = re;
16523 			_errHandler.reportError(this, re);
16524 			_errHandler.recover(this, re);
16525 		}
16526 		finally {
16527 			exitRule();
16528 		}
16529 		return _localctx;
16530 	}
16531 
16532 	public static class FileStreamOnContext extends ParserRuleContext {
16533 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
16534 		public IgnoredIdentifierContext ignoredIdentifier() {
16535 			return getRuleContext(IgnoredIdentifierContext.class,0);
16536 		}
16537 		public SchemaNameContext schemaName() {
16538 			return getRuleContext(SchemaNameContext.class,0);
16539 		}
16540 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
16541 		public FileStreamOnContext(ParserRuleContext parent, int invokingState) {
16542 			super(parent, invokingState);
16543 		}
16544 		@Override public int getRuleIndex() { return RULE_fileStreamOn; }
16545 		@Override
16546 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16547 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileStreamOn(this);
16548 			else return visitor.visitChildren(this);
16549 		}
16550 	}
16551 
16552 	public final FileStreamOnContext fileStreamOn() throws RecognitionException {
16553 		FileStreamOnContext _localctx = new FileStreamOnContext(_ctx, getState());
16554 		enterRule(_localctx, 352, RULE_fileStreamOn);
16555 		try {
16556 			enterOuterAlt(_localctx, 1);
16557 			{
16558 			setState(2483);
16559 			match(FILESTREAM_ON);
16560 			setState(2487);
16561 			_errHandler.sync(this);
16562 			switch ( getInterpreter().adaptivePredict(_input,187,_ctx) ) {
16563 			case 1:
16564 				{
16565 				setState(2484);
16566 				ignoredIdentifier();
16567 				}
16568 				break;
16569 			case 2:
16570 				{
16571 				setState(2485);
16572 				schemaName();
16573 				}
16574 				break;
16575 			case 3:
16576 				{
16577 				setState(2486);
16578 				match(STRING_);
16579 				}
16580 				break;
16581 			}
16582 			}
16583 		}
16584 		catch (RecognitionException re) {
16585 			_localctx.exception = re;
16586 			_errHandler.reportError(this, re);
16587 			_errHandler.recover(this, re);
16588 		}
16589 		finally {
16590 			exitRule();
16591 		}
16592 		return _localctx;
16593 	}
16594 
16595 	public static class ColumnConstraintsContext extends ParserRuleContext {
16596 		public List<ColumnConstraintContext> columnConstraint() {
16597 			return getRuleContexts(ColumnConstraintContext.class);
16598 		}
16599 		public ColumnConstraintContext columnConstraint(int i) {
16600 			return getRuleContext(ColumnConstraintContext.class,i);
16601 		}
16602 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
16603 		public TerminalNode COMMA_(int i) {
16604 			return getToken(SQLServerStatementParser.COMMA_, i);
16605 		}
16606 		public ColumnConstraintsContext(ParserRuleContext parent, int invokingState) {
16607 			super(parent, invokingState);
16608 		}
16609 		@Override public int getRuleIndex() { return RULE_columnConstraints; }
16610 		@Override
16611 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16612 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnConstraints(this);
16613 			else return visitor.visitChildren(this);
16614 		}
16615 	}
16616 
16617 	public final ColumnConstraintsContext columnConstraints() throws RecognitionException {
16618 		ColumnConstraintsContext _localctx = new ColumnConstraintsContext(_ctx, getState());
16619 		enterRule(_localctx, 354, RULE_columnConstraints);
16620 		try {
16621 			int _alt;
16622 			enterOuterAlt(_localctx, 1);
16623 			{
16624 			setState(2497);
16625 			_errHandler.sync(this);
16626 			switch ( getInterpreter().adaptivePredict(_input,189,_ctx) ) {
16627 			case 1:
16628 				{
16629 				setState(2489);
16630 				columnConstraint();
16631 				setState(2494);
16632 				_errHandler.sync(this);
16633 				_alt = getInterpreter().adaptivePredict(_input,188,_ctx);
16634 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
16635 					if ( _alt==1 ) {
16636 						{
16637 						{
16638 						setState(2490);
16639 						match(COMMA_);
16640 						setState(2491);
16641 						columnConstraint();
16642 						}
16643 						} 
16644 					}
16645 					setState(2496);
16646 					_errHandler.sync(this);
16647 					_alt = getInterpreter().adaptivePredict(_input,188,_ctx);
16648 				}
16649 				}
16650 				break;
16651 			}
16652 			}
16653 		}
16654 		catch (RecognitionException re) {
16655 			_localctx.exception = re;
16656 			_errHandler.reportError(this, re);
16657 			_errHandler.recover(this, re);
16658 		}
16659 		finally {
16660 			exitRule();
16661 		}
16662 		return _localctx;
16663 	}
16664 
16665 	public static class ComputedColumnDefinitionContext extends ParserRuleContext {
16666 		public ColumnNameContext columnName() {
16667 			return getRuleContext(ColumnNameContext.class,0);
16668 		}
16669 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
16670 		public ExprContext expr() {
16671 			return getRuleContext(ExprContext.class,0);
16672 		}
16673 		public TerminalNode PERSISTED() { return getToken(SQLServerStatementParser.PERSISTED, 0); }
16674 		public ComputedColumnConstraintContext computedColumnConstraint() {
16675 			return getRuleContext(ComputedColumnConstraintContext.class,0);
16676 		}
16677 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
16678 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
16679 		public ComputedColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
16680 			super(parent, invokingState);
16681 		}
16682 		@Override public int getRuleIndex() { return RULE_computedColumnDefinition; }
16683 		@Override
16684 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16685 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnDefinition(this);
16686 			else return visitor.visitChildren(this);
16687 		}
16688 	}
16689 
16690 	public final ComputedColumnDefinitionContext computedColumnDefinition() throws RecognitionException {
16691 		ComputedColumnDefinitionContext _localctx = new ComputedColumnDefinitionContext(_ctx, getState());
16692 		enterRule(_localctx, 356, RULE_computedColumnDefinition);
16693 		int _la;
16694 		try {
16695 			enterOuterAlt(_localctx, 1);
16696 			{
16697 			setState(2499);
16698 			columnName();
16699 			setState(2500);
16700 			match(AS);
16701 			setState(2501);
16702 			expr(0);
16703 			setState(2507);
16704 			_errHandler.sync(this);
16705 			switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) {
16706 			case 1:
16707 				{
16708 				setState(2502);
16709 				match(PERSISTED);
16710 				setState(2505);
16711 				_errHandler.sync(this);
16712 				_la = _input.LA(1);
16713 				if (_la==NOT) {
16714 					{
16715 					setState(2503);
16716 					match(NOT);
16717 					setState(2504);
16718 					match(NULL);
16719 					}
16720 				}
16721 
16722 				}
16723 				break;
16724 			}
16725 			setState(2510);
16726 			_errHandler.sync(this);
16727 			switch ( getInterpreter().adaptivePredict(_input,192,_ctx) ) {
16728 			case 1:
16729 				{
16730 				setState(2509);
16731 				computedColumnConstraint();
16732 				}
16733 				break;
16734 			}
16735 			}
16736 		}
16737 		catch (RecognitionException re) {
16738 			_localctx.exception = re;
16739 			_errHandler.reportError(this, re);
16740 			_errHandler.recover(this, re);
16741 		}
16742 		finally {
16743 			exitRule();
16744 		}
16745 		return _localctx;
16746 	}
16747 
16748 	public static class ColumnSetDefinitionContext extends ParserRuleContext {
16749 		public IgnoredIdentifierContext ignoredIdentifier() {
16750 			return getRuleContext(IgnoredIdentifierContext.class,0);
16751 		}
16752 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
16753 		public TerminalNode COLUMN_SET() { return getToken(SQLServerStatementParser.COLUMN_SET, 0); }
16754 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
16755 		public TerminalNode ALL_SPARSE_COLUMNS() { return getToken(SQLServerStatementParser.ALL_SPARSE_COLUMNS, 0); }
16756 		public ColumnSetDefinitionContext(ParserRuleContext parent, int invokingState) {
16757 			super(parent, invokingState);
16758 		}
16759 		@Override public int getRuleIndex() { return RULE_columnSetDefinition; }
16760 		@Override
16761 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16762 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnSetDefinition(this);
16763 			else return visitor.visitChildren(this);
16764 		}
16765 	}
16766 
16767 	public final ColumnSetDefinitionContext columnSetDefinition() throws RecognitionException {
16768 		ColumnSetDefinitionContext _localctx = new ColumnSetDefinitionContext(_ctx, getState());
16769 		enterRule(_localctx, 358, RULE_columnSetDefinition);
16770 		try {
16771 			enterOuterAlt(_localctx, 1);
16772 			{
16773 			setState(2512);
16774 			ignoredIdentifier();
16775 			setState(2513);
16776 			match(IDENTIFIER_);
16777 			setState(2514);
16778 			match(COLUMN_SET);
16779 			setState(2515);
16780 			match(FOR);
16781 			setState(2516);
16782 			match(ALL_SPARSE_COLUMNS);
16783 			}
16784 		}
16785 		catch (RecognitionException re) {
16786 			_localctx.exception = re;
16787 			_errHandler.reportError(this, re);
16788 			_errHandler.recover(this, re);
16789 		}
16790 		finally {
16791 			exitRule();
16792 		}
16793 		return _localctx;
16794 	}
16795 
16796 	public static class TableConstraintContext extends ParserRuleContext {
16797 		public TablePrimaryConstraintContext tablePrimaryConstraint() {
16798 			return getRuleContext(TablePrimaryConstraintContext.class,0);
16799 		}
16800 		public TableForeignKeyConstraintContext tableForeignKeyConstraint() {
16801 			return getRuleContext(TableForeignKeyConstraintContext.class,0);
16802 		}
16803 		public CheckConstraintContext checkConstraint() {
16804 			return getRuleContext(CheckConstraintContext.class,0);
16805 		}
16806 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
16807 		public ConstraintNameContext constraintName() {
16808 			return getRuleContext(ConstraintNameContext.class,0);
16809 		}
16810 		public TableConstraintContext(ParserRuleContext parent, int invokingState) {
16811 			super(parent, invokingState);
16812 		}
16813 		@Override public int getRuleIndex() { return RULE_tableConstraint; }
16814 		@Override
16815 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16816 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableConstraint(this);
16817 			else return visitor.visitChildren(this);
16818 		}
16819 	}
16820 
16821 	public final TableConstraintContext tableConstraint() throws RecognitionException {
16822 		TableConstraintContext _localctx = new TableConstraintContext(_ctx, getState());
16823 		enterRule(_localctx, 360, RULE_tableConstraint);
16824 		int _la;
16825 		try {
16826 			enterOuterAlt(_localctx, 1);
16827 			{
16828 			setState(2520);
16829 			_errHandler.sync(this);
16830 			_la = _input.LA(1);
16831 			if (_la==CONSTRAINT) {
16832 				{
16833 				setState(2518);
16834 				match(CONSTRAINT);
16835 				setState(2519);
16836 				constraintName();
16837 				}
16838 			}
16839 
16840 			setState(2525);
16841 			_errHandler.sync(this);
16842 			switch (_input.LA(1)) {
16843 			case PRIMARY:
16844 			case UNIQUE:
16845 			case KEY:
16846 				{
16847 				setState(2522);
16848 				tablePrimaryConstraint();
16849 				}
16850 				break;
16851 			case LP_:
16852 			case FOREIGN:
16853 				{
16854 				setState(2523);
16855 				tableForeignKeyConstraint();
16856 				}
16857 				break;
16858 			case CHECK:
16859 				{
16860 				setState(2524);
16861 				checkConstraint();
16862 				}
16863 				break;
16864 			default:
16865 				throw new NoViableAltException(this);
16866 			}
16867 			}
16868 		}
16869 		catch (RecognitionException re) {
16870 			_localctx.exception = re;
16871 			_errHandler.reportError(this, re);
16872 			_errHandler.recover(this, re);
16873 		}
16874 		finally {
16875 			exitRule();
16876 		}
16877 		return _localctx;
16878 	}
16879 
16880 	public static class TablePrimaryConstraintContext extends ParserRuleContext {
16881 		public PrimaryKeyUniqueContext primaryKeyUnique() {
16882 			return getRuleContext(PrimaryKeyUniqueContext.class,0);
16883 		}
16884 		public DiskTablePrimaryConstraintOptionContext diskTablePrimaryConstraintOption() {
16885 			return getRuleContext(DiskTablePrimaryConstraintOptionContext.class,0);
16886 		}
16887 		public MemoryTablePrimaryConstraintOptionContext memoryTablePrimaryConstraintOption() {
16888 			return getRuleContext(MemoryTablePrimaryConstraintOptionContext.class,0);
16889 		}
16890 		public TablePrimaryConstraintContext(ParserRuleContext parent, int invokingState) {
16891 			super(parent, invokingState);
16892 		}
16893 		@Override public int getRuleIndex() { return RULE_tablePrimaryConstraint; }
16894 		@Override
16895 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16896 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTablePrimaryConstraint(this);
16897 			else return visitor.visitChildren(this);
16898 		}
16899 	}
16900 
16901 	public final TablePrimaryConstraintContext tablePrimaryConstraint() throws RecognitionException {
16902 		TablePrimaryConstraintContext _localctx = new TablePrimaryConstraintContext(_ctx, getState());
16903 		enterRule(_localctx, 362, RULE_tablePrimaryConstraint);
16904 		try {
16905 			enterOuterAlt(_localctx, 1);
16906 			{
16907 			setState(2527);
16908 			primaryKeyUnique();
16909 			setState(2530);
16910 			_errHandler.sync(this);
16911 			switch ( getInterpreter().adaptivePredict(_input,195,_ctx) ) {
16912 			case 1:
16913 				{
16914 				setState(2528);
16915 				diskTablePrimaryConstraintOption();
16916 				}
16917 				break;
16918 			case 2:
16919 				{
16920 				setState(2529);
16921 				memoryTablePrimaryConstraintOption();
16922 				}
16923 				break;
16924 			}
16925 			}
16926 		}
16927 		catch (RecognitionException re) {
16928 			_localctx.exception = re;
16929 			_errHandler.reportError(this, re);
16930 			_errHandler.recover(this, re);
16931 		}
16932 		finally {
16933 			exitRule();
16934 		}
16935 		return _localctx;
16936 	}
16937 
16938 	public static class PrimaryKeyUniqueContext extends ParserRuleContext {
16939 		public PrimaryKeyContext primaryKey() {
16940 			return getRuleContext(PrimaryKeyContext.class,0);
16941 		}
16942 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
16943 		public PrimaryKeyUniqueContext(ParserRuleContext parent, int invokingState) {
16944 			super(parent, invokingState);
16945 		}
16946 		@Override public int getRuleIndex() { return RULE_primaryKeyUnique; }
16947 		@Override
16948 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16949 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyUnique(this);
16950 			else return visitor.visitChildren(this);
16951 		}
16952 	}
16953 
16954 	public final PrimaryKeyUniqueContext primaryKeyUnique() throws RecognitionException {
16955 		PrimaryKeyUniqueContext _localctx = new PrimaryKeyUniqueContext(_ctx, getState());
16956 		enterRule(_localctx, 364, RULE_primaryKeyUnique);
16957 		try {
16958 			setState(2534);
16959 			_errHandler.sync(this);
16960 			switch (_input.LA(1)) {
16961 			case PRIMARY:
16962 			case KEY:
16963 				enterOuterAlt(_localctx, 1);
16964 				{
16965 				setState(2532);
16966 				primaryKey();
16967 				}
16968 				break;
16969 			case UNIQUE:
16970 				enterOuterAlt(_localctx, 2);
16971 				{
16972 				setState(2533);
16973 				match(UNIQUE);
16974 				}
16975 				break;
16976 			default:
16977 				throw new NoViableAltException(this);
16978 			}
16979 		}
16980 		catch (RecognitionException re) {
16981 			_localctx.exception = re;
16982 			_errHandler.reportError(this, re);
16983 			_errHandler.recover(this, re);
16984 		}
16985 		finally {
16986 			exitRule();
16987 		}
16988 		return _localctx;
16989 	}
16990 
16991 	public static class DiskTablePrimaryConstraintOptionContext extends ParserRuleContext {
16992 		public ColumnNamesContext columnNames() {
16993 			return getRuleContext(ColumnNamesContext.class,0);
16994 		}
16995 		public ClusterOptionContext clusterOption() {
16996 			return getRuleContext(ClusterOptionContext.class,0);
16997 		}
16998 		public PrimaryKeyWithClauseContext primaryKeyWithClause() {
16999 			return getRuleContext(PrimaryKeyWithClauseContext.class,0);
17000 		}
17001 		public PrimaryKeyOnClauseContext primaryKeyOnClause() {
17002 			return getRuleContext(PrimaryKeyOnClauseContext.class,0);
17003 		}
17004 		public DiskTablePrimaryConstraintOptionContext(ParserRuleContext parent, int invokingState) {
17005 			super(parent, invokingState);
17006 		}
17007 		@Override public int getRuleIndex() { return RULE_diskTablePrimaryConstraintOption; }
17008 		@Override
17009 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17010 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDiskTablePrimaryConstraintOption(this);
17011 			else return visitor.visitChildren(this);
17012 		}
17013 	}
17014 
17015 	public final DiskTablePrimaryConstraintOptionContext diskTablePrimaryConstraintOption() throws RecognitionException {
17016 		DiskTablePrimaryConstraintOptionContext _localctx = new DiskTablePrimaryConstraintOptionContext(_ctx, getState());
17017 		enterRule(_localctx, 366, RULE_diskTablePrimaryConstraintOption);
17018 		int _la;
17019 		try {
17020 			enterOuterAlt(_localctx, 1);
17021 			{
17022 			setState(2537);
17023 			_errHandler.sync(this);
17024 			_la = _input.LA(1);
17025 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
17026 				{
17027 				setState(2536);
17028 				clusterOption();
17029 				}
17030 			}
17031 
17032 			setState(2539);
17033 			columnNames();
17034 			setState(2541);
17035 			_errHandler.sync(this);
17036 			switch ( getInterpreter().adaptivePredict(_input,198,_ctx) ) {
17037 			case 1:
17038 				{
17039 				setState(2540);
17040 				primaryKeyWithClause();
17041 				}
17042 				break;
17043 			}
17044 			setState(2544);
17045 			_errHandler.sync(this);
17046 			_la = _input.LA(1);
17047 			if (_la==ON) {
17048 				{
17049 				setState(2543);
17050 				primaryKeyOnClause();
17051 				}
17052 			}
17053 
17054 			}
17055 		}
17056 		catch (RecognitionException re) {
17057 			_localctx.exception = re;
17058 			_errHandler.reportError(this, re);
17059 			_errHandler.recover(this, re);
17060 		}
17061 		finally {
17062 			exitRule();
17063 		}
17064 		return _localctx;
17065 	}
17066 
17067 	public static class MemoryTablePrimaryConstraintOptionContext extends ParserRuleContext {
17068 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
17069 		public ColumnNamesContext columnNames() {
17070 			return getRuleContext(ColumnNamesContext.class,0);
17071 		}
17072 		public HashWithBucketContext hashWithBucket() {
17073 			return getRuleContext(HashWithBucketContext.class,0);
17074 		}
17075 		public MemoryTablePrimaryConstraintOptionContext(ParserRuleContext parent, int invokingState) {
17076 			super(parent, invokingState);
17077 		}
17078 		@Override public int getRuleIndex() { return RULE_memoryTablePrimaryConstraintOption; }
17079 		@Override
17080 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17081 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMemoryTablePrimaryConstraintOption(this);
17082 			else return visitor.visitChildren(this);
17083 		}
17084 	}
17085 
17086 	public final MemoryTablePrimaryConstraintOptionContext memoryTablePrimaryConstraintOption() throws RecognitionException {
17087 		MemoryTablePrimaryConstraintOptionContext _localctx = new MemoryTablePrimaryConstraintOptionContext(_ctx, getState());
17088 		enterRule(_localctx, 368, RULE_memoryTablePrimaryConstraintOption);
17089 		try {
17090 			enterOuterAlt(_localctx, 1);
17091 			{
17092 			setState(2546);
17093 			match(NONCLUSTERED);
17094 			setState(2549);
17095 			_errHandler.sync(this);
17096 			switch (_input.LA(1)) {
17097 			case LP_:
17098 				{
17099 				setState(2547);
17100 				columnNames();
17101 				}
17102 				break;
17103 			case HASH:
17104 				{
17105 				setState(2548);
17106 				hashWithBucket();
17107 				}
17108 				break;
17109 			default:
17110 				throw new NoViableAltException(this);
17111 			}
17112 			}
17113 		}
17114 		catch (RecognitionException re) {
17115 			_localctx.exception = re;
17116 			_errHandler.reportError(this, re);
17117 			_errHandler.recover(this, re);
17118 		}
17119 		finally {
17120 			exitRule();
17121 		}
17122 		return _localctx;
17123 	}
17124 
17125 	public static class HashWithBucketContext extends ParserRuleContext {
17126 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
17127 		public ColumnNamesContext columnNames() {
17128 			return getRuleContext(ColumnNamesContext.class,0);
17129 		}
17130 		public WithBucketContext withBucket() {
17131 			return getRuleContext(WithBucketContext.class,0);
17132 		}
17133 		public HashWithBucketContext(ParserRuleContext parent, int invokingState) {
17134 			super(parent, invokingState);
17135 		}
17136 		@Override public int getRuleIndex() { return RULE_hashWithBucket; }
17137 		@Override
17138 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17139 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHashWithBucket(this);
17140 			else return visitor.visitChildren(this);
17141 		}
17142 	}
17143 
17144 	public final HashWithBucketContext hashWithBucket() throws RecognitionException {
17145 		HashWithBucketContext _localctx = new HashWithBucketContext(_ctx, getState());
17146 		enterRule(_localctx, 370, RULE_hashWithBucket);
17147 		try {
17148 			enterOuterAlt(_localctx, 1);
17149 			{
17150 			setState(2551);
17151 			match(HASH);
17152 			setState(2552);
17153 			columnNames();
17154 			setState(2553);
17155 			withBucket();
17156 			}
17157 		}
17158 		catch (RecognitionException re) {
17159 			_localctx.exception = re;
17160 			_errHandler.reportError(this, re);
17161 			_errHandler.recover(this, re);
17162 		}
17163 		finally {
17164 			exitRule();
17165 		}
17166 		return _localctx;
17167 	}
17168 
17169 	public static class TableForeignKeyConstraintContext extends ParserRuleContext {
17170 		public List<ColumnNamesContext> columnNames() {
17171 			return getRuleContexts(ColumnNamesContext.class);
17172 		}
17173 		public ColumnNamesContext columnNames(int i) {
17174 			return getRuleContext(ColumnNamesContext.class,i);
17175 		}
17176 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
17177 		public TableNameContext tableName() {
17178 			return getRuleContext(TableNameContext.class,0);
17179 		}
17180 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
17181 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
17182 		public List<ForeignKeyOnActionContext> foreignKeyOnAction() {
17183 			return getRuleContexts(ForeignKeyOnActionContext.class);
17184 		}
17185 		public ForeignKeyOnActionContext foreignKeyOnAction(int i) {
17186 			return getRuleContext(ForeignKeyOnActionContext.class,i);
17187 		}
17188 		public TableForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
17189 			super(parent, invokingState);
17190 		}
17191 		@Override public int getRuleIndex() { return RULE_tableForeignKeyConstraint; }
17192 		@Override
17193 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17194 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableForeignKeyConstraint(this);
17195 			else return visitor.visitChildren(this);
17196 		}
17197 	}
17198 
17199 	public final TableForeignKeyConstraintContext tableForeignKeyConstraint() throws RecognitionException {
17200 		TableForeignKeyConstraintContext _localctx = new TableForeignKeyConstraintContext(_ctx, getState());
17201 		enterRule(_localctx, 372, RULE_tableForeignKeyConstraint);
17202 		int _la;
17203 		try {
17204 			enterOuterAlt(_localctx, 1);
17205 			{
17206 			setState(2557);
17207 			_errHandler.sync(this);
17208 			_la = _input.LA(1);
17209 			if (_la==FOREIGN) {
17210 				{
17211 				setState(2555);
17212 				match(FOREIGN);
17213 				setState(2556);
17214 				match(KEY);
17215 				}
17216 			}
17217 
17218 			setState(2559);
17219 			columnNames();
17220 			setState(2560);
17221 			match(REFERENCES);
17222 			setState(2561);
17223 			tableName();
17224 			setState(2562);
17225 			columnNames();
17226 			setState(2566);
17227 			_errHandler.sync(this);
17228 			_la = _input.LA(1);
17229 			while (_la==ON || _la==NOT) {
17230 				{
17231 				{
17232 				setState(2563);
17233 				foreignKeyOnAction();
17234 				}
17235 				}
17236 				setState(2568);
17237 				_errHandler.sync(this);
17238 				_la = _input.LA(1);
17239 			}
17240 			}
17241 		}
17242 		catch (RecognitionException re) {
17243 			_localctx.exception = re;
17244 			_errHandler.reportError(this, re);
17245 			_errHandler.recover(this, re);
17246 		}
17247 		finally {
17248 			exitRule();
17249 		}
17250 		return _localctx;
17251 	}
17252 
17253 	public static class TableIndexContext extends ParserRuleContext {
17254 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
17255 		public IndexNameContext indexName() {
17256 			return getRuleContext(IndexNameContext.class,0);
17257 		}
17258 		public IndexNameOptionContext indexNameOption() {
17259 			return getRuleContext(IndexNameOptionContext.class,0);
17260 		}
17261 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
17262 		public IndexOptionsContext indexOptions() {
17263 			return getRuleContext(IndexOptionsContext.class,0);
17264 		}
17265 		public IndexOnClauseContext indexOnClause() {
17266 			return getRuleContext(IndexOnClauseContext.class,0);
17267 		}
17268 		public FileStreamOnContext fileStreamOn() {
17269 			return getRuleContext(FileStreamOnContext.class,0);
17270 		}
17271 		public TableIndexContext(ParserRuleContext parent, int invokingState) {
17272 			super(parent, invokingState);
17273 		}
17274 		@Override public int getRuleIndex() { return RULE_tableIndex; }
17275 		@Override
17276 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17277 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableIndex(this);
17278 			else return visitor.visitChildren(this);
17279 		}
17280 	}
17281 
17282 	public final TableIndexContext tableIndex() throws RecognitionException {
17283 		TableIndexContext _localctx = new TableIndexContext(_ctx, getState());
17284 		enterRule(_localctx, 374, RULE_tableIndex);
17285 		int _la;
17286 		try {
17287 			enterOuterAlt(_localctx, 1);
17288 			{
17289 			setState(2569);
17290 			match(INDEX);
17291 			setState(2570);
17292 			indexName();
17293 			setState(2571);
17294 			indexNameOption();
17295 			setState(2574);
17296 			_errHandler.sync(this);
17297 			_la = _input.LA(1);
17298 			if (_la==WITH) {
17299 				{
17300 				setState(2572);
17301 				match(WITH);
17302 				setState(2573);
17303 				indexOptions();
17304 				}
17305 			}
17306 
17307 			setState(2577);
17308 			_errHandler.sync(this);
17309 			_la = _input.LA(1);
17310 			if (_la==ON) {
17311 				{
17312 				setState(2576);
17313 				indexOnClause();
17314 				}
17315 			}
17316 
17317 			setState(2580);
17318 			_errHandler.sync(this);
17319 			_la = _input.LA(1);
17320 			if (_la==FILESTREAM_ON) {
17321 				{
17322 				setState(2579);
17323 				fileStreamOn();
17324 				}
17325 			}
17326 
17327 			}
17328 		}
17329 		catch (RecognitionException re) {
17330 			_localctx.exception = re;
17331 			_errHandler.reportError(this, re);
17332 			_errHandler.recover(this, re);
17333 		}
17334 		finally {
17335 			exitRule();
17336 		}
17337 		return _localctx;
17338 	}
17339 
17340 	public static class IndexNameOptionContext extends ParserRuleContext {
17341 		public ColumnNamesContext columnNames() {
17342 			return getRuleContext(ColumnNamesContext.class,0);
17343 		}
17344 		public ClusterOptionContext clusterOption() {
17345 			return getRuleContext(ClusterOptionContext.class,0);
17346 		}
17347 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
17348 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
17349 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
17350 		public IndexNameOptionContext(ParserRuleContext parent, int invokingState) {
17351 			super(parent, invokingState);
17352 		}
17353 		@Override public int getRuleIndex() { return RULE_indexNameOption; }
17354 		@Override
17355 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17356 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexNameOption(this);
17357 			else return visitor.visitChildren(this);
17358 		}
17359 	}
17360 
17361 	public final IndexNameOptionContext indexNameOption() throws RecognitionException {
17362 		IndexNameOptionContext _localctx = new IndexNameOptionContext(_ctx, getState());
17363 		enterRule(_localctx, 376, RULE_indexNameOption);
17364 		int _la;
17365 		try {
17366 			setState(2593);
17367 			_errHandler.sync(this);
17368 			switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) {
17369 			case 1:
17370 				enterOuterAlt(_localctx, 1);
17371 				{
17372 				setState(2583);
17373 				_errHandler.sync(this);
17374 				_la = _input.LA(1);
17375 				if (_la==CLUSTERED || _la==NONCLUSTERED) {
17376 					{
17377 					setState(2582);
17378 					clusterOption();
17379 					}
17380 				}
17381 
17382 				setState(2585);
17383 				columnNames();
17384 				}
17385 				break;
17386 			case 2:
17387 				enterOuterAlt(_localctx, 2);
17388 				{
17389 				setState(2586);
17390 				match(CLUSTERED);
17391 				setState(2587);
17392 				match(COLUMNSTORE);
17393 				}
17394 				break;
17395 			case 3:
17396 				enterOuterAlt(_localctx, 3);
17397 				{
17398 				setState(2589);
17399 				_errHandler.sync(this);
17400 				_la = _input.LA(1);
17401 				if (_la==NONCLUSTERED) {
17402 					{
17403 					setState(2588);
17404 					match(NONCLUSTERED);
17405 					}
17406 				}
17407 
17408 				setState(2591);
17409 				match(COLUMNSTORE);
17410 				setState(2592);
17411 				columnNames();
17412 				}
17413 				break;
17414 			}
17415 		}
17416 		catch (RecognitionException re) {
17417 			_localctx.exception = re;
17418 			_errHandler.reportError(this, re);
17419 			_errHandler.recover(this, re);
17420 		}
17421 		finally {
17422 			exitRule();
17423 		}
17424 		return _localctx;
17425 	}
17426 
17427 	public static class IndexOptionsContext extends ParserRuleContext {
17428 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17429 		public List<IndexOptionContext> indexOption() {
17430 			return getRuleContexts(IndexOptionContext.class);
17431 		}
17432 		public IndexOptionContext indexOption(int i) {
17433 			return getRuleContext(IndexOptionContext.class,i);
17434 		}
17435 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17436 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
17437 		public TerminalNode COMMA_(int i) {
17438 			return getToken(SQLServerStatementParser.COMMA_, i);
17439 		}
17440 		public IndexOptionsContext(ParserRuleContext parent, int invokingState) {
17441 			super(parent, invokingState);
17442 		}
17443 		@Override public int getRuleIndex() { return RULE_indexOptions; }
17444 		@Override
17445 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17446 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOptions(this);
17447 			else return visitor.visitChildren(this);
17448 		}
17449 	}
17450 
17451 	public final IndexOptionsContext indexOptions() throws RecognitionException {
17452 		IndexOptionsContext _localctx = new IndexOptionsContext(_ctx, getState());
17453 		enterRule(_localctx, 378, RULE_indexOptions);
17454 		int _la;
17455 		try {
17456 			enterOuterAlt(_localctx, 1);
17457 			{
17458 			setState(2595);
17459 			match(LP_);
17460 			setState(2596);
17461 			indexOption();
17462 			setState(2601);
17463 			_errHandler.sync(this);
17464 			_la = _input.LA(1);
17465 			while (_la==COMMA_) {
17466 				{
17467 				{
17468 				setState(2597);
17469 				match(COMMA_);
17470 				setState(2598);
17471 				indexOption();
17472 				}
17473 				}
17474 				setState(2603);
17475 				_errHandler.sync(this);
17476 				_la = _input.LA(1);
17477 			}
17478 			setState(2604);
17479 			match(RP_);
17480 			}
17481 		}
17482 		catch (RecognitionException re) {
17483 			_localctx.exception = re;
17484 			_errHandler.reportError(this, re);
17485 			_errHandler.recover(this, re);
17486 		}
17487 		finally {
17488 			exitRule();
17489 		}
17490 		return _localctx;
17491 	}
17492 
17493 	public static class PeriodClauseContext extends ParserRuleContext {
17494 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
17495 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
17496 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
17497 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17498 		public List<ColumnNameContext> columnName() {
17499 			return getRuleContexts(ColumnNameContext.class);
17500 		}
17501 		public ColumnNameContext columnName(int i) {
17502 			return getRuleContext(ColumnNameContext.class,i);
17503 		}
17504 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
17505 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17506 		public PeriodClauseContext(ParserRuleContext parent, int invokingState) {
17507 			super(parent, invokingState);
17508 		}
17509 		@Override public int getRuleIndex() { return RULE_periodClause; }
17510 		@Override
17511 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17512 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPeriodClause(this);
17513 			else return visitor.visitChildren(this);
17514 		}
17515 	}
17516 
17517 	public final PeriodClauseContext periodClause() throws RecognitionException {
17518 		PeriodClauseContext _localctx = new PeriodClauseContext(_ctx, getState());
17519 		enterRule(_localctx, 380, RULE_periodClause);
17520 		try {
17521 			enterOuterAlt(_localctx, 1);
17522 			{
17523 			setState(2606);
17524 			match(PERIOD);
17525 			setState(2607);
17526 			match(FOR);
17527 			setState(2608);
17528 			match(SYSTEM_TIME);
17529 			setState(2609);
17530 			match(LP_);
17531 			setState(2610);
17532 			columnName();
17533 			setState(2611);
17534 			match(COMMA_);
17535 			setState(2612);
17536 			columnName();
17537 			setState(2613);
17538 			match(RP_);
17539 			}
17540 		}
17541 		catch (RecognitionException re) {
17542 			_localctx.exception = re;
17543 			_errHandler.reportError(this, re);
17544 			_errHandler.recover(this, re);
17545 		}
17546 		finally {
17547 			exitRule();
17548 		}
17549 		return _localctx;
17550 	}
17551 
17552 	public static class PartitionSchemeContext extends ParserRuleContext {
17553 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17554 		public SchemaNameContext schemaName() {
17555 			return getRuleContext(SchemaNameContext.class,0);
17556 		}
17557 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17558 		public ColumnNameContext columnName() {
17559 			return getRuleContext(ColumnNameContext.class,0);
17560 		}
17561 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17562 		public IgnoredIdentifierContext ignoredIdentifier() {
17563 			return getRuleContext(IgnoredIdentifierContext.class,0);
17564 		}
17565 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
17566 		public PartitionSchemeContext(ParserRuleContext parent, int invokingState) {
17567 			super(parent, invokingState);
17568 		}
17569 		@Override public int getRuleIndex() { return RULE_partitionScheme; }
17570 		@Override
17571 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17572 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionScheme(this);
17573 			else return visitor.visitChildren(this);
17574 		}
17575 	}
17576 
17577 	public final PartitionSchemeContext partitionScheme() throws RecognitionException {
17578 		PartitionSchemeContext _localctx = new PartitionSchemeContext(_ctx, getState());
17579 		enterRule(_localctx, 382, RULE_partitionScheme);
17580 		int _la;
17581 		try {
17582 			enterOuterAlt(_localctx, 1);
17583 			{
17584 			setState(2625);
17585 			_errHandler.sync(this);
17586 			_la = _input.LA(1);
17587 			if (_la==ON) {
17588 				{
17589 				setState(2615);
17590 				match(ON);
17591 				setState(2623);
17592 				_errHandler.sync(this);
17593 				switch ( getInterpreter().adaptivePredict(_input,210,_ctx) ) {
17594 				case 1:
17595 					{
17596 					setState(2616);
17597 					schemaName();
17598 					setState(2617);
17599 					match(LP_);
17600 					setState(2618);
17601 					columnName();
17602 					setState(2619);
17603 					match(RP_);
17604 					}
17605 					break;
17606 				case 2:
17607 					{
17608 					setState(2621);
17609 					ignoredIdentifier();
17610 					}
17611 					break;
17612 				case 3:
17613 					{
17614 					setState(2622);
17615 					match(STRING_);
17616 					}
17617 					break;
17618 				}
17619 				}
17620 			}
17621 
17622 			}
17623 		}
17624 		catch (RecognitionException re) {
17625 			_localctx.exception = re;
17626 			_errHandler.reportError(this, re);
17627 			_errHandler.recover(this, re);
17628 		}
17629 		finally {
17630 			exitRule();
17631 		}
17632 		return _localctx;
17633 	}
17634 
17635 	public static class FileGroupContext extends ParserRuleContext {
17636 		public TerminalNode TEXTIMAGE_ON() { return getToken(SQLServerStatementParser.TEXTIMAGE_ON, 0); }
17637 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
17638 		public TableOptionsContext tableOptions() {
17639 			return getRuleContext(TableOptionsContext.class,0);
17640 		}
17641 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
17642 			return getRuleContexts(IgnoredIdentifierContext.class);
17643 		}
17644 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
17645 			return getRuleContext(IgnoredIdentifierContext.class,i);
17646 		}
17647 		public List<TerminalNode> STRING_() { return getTokens(SQLServerStatementParser.STRING_); }
17648 		public TerminalNode STRING_(int i) {
17649 			return getToken(SQLServerStatementParser.STRING_, i);
17650 		}
17651 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
17652 		public SchemaNameContext schemaName() {
17653 			return getRuleContext(SchemaNameContext.class,0);
17654 		}
17655 		public FileGroupContext(ParserRuleContext parent, int invokingState) {
17656 			super(parent, invokingState);
17657 		}
17658 		@Override public int getRuleIndex() { return RULE_fileGroup; }
17659 		@Override
17660 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17661 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileGroup(this);
17662 			else return visitor.visitChildren(this);
17663 		}
17664 	}
17665 
17666 	public final FileGroupContext fileGroup() throws RecognitionException {
17667 		FileGroupContext _localctx = new FileGroupContext(_ctx, getState());
17668 		enterRule(_localctx, 384, RULE_fileGroup);
17669 		int _la;
17670 		try {
17671 			enterOuterAlt(_localctx, 1);
17672 			{
17673 			setState(2632);
17674 			_errHandler.sync(this);
17675 			_la = _input.LA(1);
17676 			if (_la==TEXTIMAGE_ON) {
17677 				{
17678 				setState(2627);
17679 				match(TEXTIMAGE_ON);
17680 				setState(2630);
17681 				_errHandler.sync(this);
17682 				switch (_input.LA(1)) {
17683 				case IDENTIFIER_:
17684 					{
17685 					setState(2628);
17686 					ignoredIdentifier();
17687 					}
17688 					break;
17689 				case STRING_:
17690 					{
17691 					setState(2629);
17692 					match(STRING_);
17693 					}
17694 					break;
17695 				default:
17696 					throw new NoViableAltException(this);
17697 				}
17698 				}
17699 			}
17700 
17701 			setState(2641);
17702 			_errHandler.sync(this);
17703 			_la = _input.LA(1);
17704 			if (_la==FILESTREAM_ON || _la==IDENTIFIER_) {
17705 				{
17706 				setState(2639);
17707 				_errHandler.sync(this);
17708 				switch (_input.LA(1)) {
17709 				case FILESTREAM_ON:
17710 					{
17711 					setState(2634);
17712 					match(FILESTREAM_ON);
17713 					{
17714 					setState(2635);
17715 					schemaName();
17716 					}
17717 					}
17718 					break;
17719 				case IDENTIFIER_:
17720 					{
17721 					setState(2636);
17722 					ignoredIdentifier();
17723 					setState(2637);
17724 					match(STRING_);
17725 					}
17726 					break;
17727 				default:
17728 					throw new NoViableAltException(this);
17729 				}
17730 				}
17731 			}
17732 
17733 			setState(2645);
17734 			_errHandler.sync(this);
17735 			switch ( getInterpreter().adaptivePredict(_input,216,_ctx) ) {
17736 			case 1:
17737 				{
17738 				setState(2643);
17739 				match(WITH);
17740 				setState(2644);
17741 				tableOptions();
17742 				}
17743 				break;
17744 			}
17745 			}
17746 		}
17747 		catch (RecognitionException re) {
17748 			_localctx.exception = re;
17749 			_errHandler.reportError(this, re);
17750 			_errHandler.recover(this, re);
17751 		}
17752 		finally {
17753 			exitRule();
17754 		}
17755 		return _localctx;
17756 	}
17757 
17758 	public static class TableOptionsContext extends ParserRuleContext {
17759 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17760 		public List<TableOptionContext> tableOption() {
17761 			return getRuleContexts(TableOptionContext.class);
17762 		}
17763 		public TableOptionContext tableOption(int i) {
17764 			return getRuleContext(TableOptionContext.class,i);
17765 		}
17766 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17767 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
17768 		public TerminalNode COMMA_(int i) {
17769 			return getToken(SQLServerStatementParser.COMMA_, i);
17770 		}
17771 		public TableOptionsContext(ParserRuleContext parent, int invokingState) {
17772 			super(parent, invokingState);
17773 		}
17774 		@Override public int getRuleIndex() { return RULE_tableOptions; }
17775 		@Override
17776 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17777 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOptions(this);
17778 			else return visitor.visitChildren(this);
17779 		}
17780 	}
17781 
17782 	public final TableOptionsContext tableOptions() throws RecognitionException {
17783 		TableOptionsContext _localctx = new TableOptionsContext(_ctx, getState());
17784 		enterRule(_localctx, 386, RULE_tableOptions);
17785 		int _la;
17786 		try {
17787 			enterOuterAlt(_localctx, 1);
17788 			{
17789 			setState(2647);
17790 			match(LP_);
17791 			setState(2648);
17792 			tableOption();
17793 			setState(2653);
17794 			_errHandler.sync(this);
17795 			_la = _input.LA(1);
17796 			while (_la==COMMA_) {
17797 				{
17798 				{
17799 				setState(2649);
17800 				match(COMMA_);
17801 				setState(2650);
17802 				tableOption();
17803 				}
17804 				}
17805 				setState(2655);
17806 				_errHandler.sync(this);
17807 				_la = _input.LA(1);
17808 			}
17809 			setState(2656);
17810 			match(RP_);
17811 			}
17812 		}
17813 		catch (RecognitionException re) {
17814 			_localctx.exception = re;
17815 			_errHandler.reportError(this, re);
17816 			_errHandler.recover(this, re);
17817 		}
17818 		finally {
17819 			exitRule();
17820 		}
17821 		return _localctx;
17822 	}
17823 
17824 	public static class TableOptionContext extends ParserRuleContext {
17825 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
17826 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
17827 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
17828 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
17829 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
17830 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17831 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
17832 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17833 		public PartitionExpressionsContext partitionExpressions() {
17834 			return getRuleContext(PartitionExpressionsContext.class,0);
17835 		}
17836 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17837 		public TerminalNode FILETABLE_DIRECTORY() { return getToken(SQLServerStatementParser.FILETABLE_DIRECTORY, 0); }
17838 		public IgnoredIdentifierContext ignoredIdentifier() {
17839 			return getRuleContext(IgnoredIdentifierContext.class,0);
17840 		}
17841 		public TerminalNode FILETABLE_COLLATE_FILENAME() { return getToken(SQLServerStatementParser.FILETABLE_COLLATE_FILENAME, 0); }
17842 		public CollationNameContext collationName() {
17843 			return getRuleContext(CollationNameContext.class,0);
17844 		}
17845 		public TerminalNode DATABASE_DEAULT() { return getToken(SQLServerStatementParser.DATABASE_DEAULT, 0); }
17846 		public TerminalNode FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME, 0); }
17847 		public TerminalNode FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME, 0); }
17848 		public TerminalNode FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME, 0); }
17849 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
17850 		public OnHistoryTableClauseContext onHistoryTableClause() {
17851 			return getRuleContext(OnHistoryTableClauseContext.class,0);
17852 		}
17853 		public TerminalNode REMOTE_DATA_ARCHIVE() { return getToken(SQLServerStatementParser.REMOTE_DATA_ARCHIVE, 0); }
17854 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
17855 		public MigrationState_Context migrationState_() {
17856 			return getRuleContext(MigrationState_Context.class,0);
17857 		}
17858 		public TableStretchOptionsContext tableStretchOptions() {
17859 			return getRuleContext(TableStretchOptionsContext.class,0);
17860 		}
17861 		public TableOperationOptionContext tableOperationOption() {
17862 			return getRuleContext(TableOperationOptionContext.class,0);
17863 		}
17864 		public DistributionOptionContext distributionOption() {
17865 			return getRuleContext(DistributionOptionContext.class,0);
17866 		}
17867 		public DataWareHouseTableOptionContext dataWareHouseTableOption() {
17868 			return getRuleContext(DataWareHouseTableOptionContext.class,0);
17869 		}
17870 		public DataDelectionOptionContext dataDelectionOption() {
17871 			return getRuleContext(DataDelectionOptionContext.class,0);
17872 		}
17873 		public DataWareHousePartitionOptionContext dataWareHousePartitionOption() {
17874 			return getRuleContext(DataWareHousePartitionOptionContext.class,0);
17875 		}
17876 		public TableOptionContext(ParserRuleContext parent, int invokingState) {
17877 			super(parent, invokingState);
17878 		}
17879 		@Override public int getRuleIndex() { return RULE_tableOption; }
17880 		@Override
17881 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17882 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOption(this);
17883 			else return visitor.visitChildren(this);
17884 		}
17885 	}
17886 
17887 	public final TableOptionContext tableOption() throws RecognitionException {
17888 		TableOptionContext _localctx = new TableOptionContext(_ctx, getState());
17889 		enterRule(_localctx, 388, RULE_tableOption);
17890 		int _la;
17891 		try {
17892 			setState(2708);
17893 			_errHandler.sync(this);
17894 			switch ( getInterpreter().adaptivePredict(_input,223,_ctx) ) {
17895 			case 1:
17896 				enterOuterAlt(_localctx, 1);
17897 				{
17898 				setState(2658);
17899 				match(DATA_COMPRESSION);
17900 				setState(2659);
17901 				match(EQ_);
17902 				setState(2660);
17903 				_la = _input.LA(1);
17904 				if ( !(((((_la - 221)) & ~0x3f) == 0 && ((1L << (_la - 221)) & ((1L << (ROW - 221)) | (1L << (NONE - 221)) | (1L << (PAGE - 221)))) != 0)) ) {
17905 				_errHandler.recoverInline(this);
17906 				}
17907 				else {
17908 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
17909 					_errHandler.reportMatch(this);
17910 					consume();
17911 				}
17912 				setState(2667);
17913 				_errHandler.sync(this);
17914 				_la = _input.LA(1);
17915 				if (_la==ON) {
17916 					{
17917 					setState(2661);
17918 					match(ON);
17919 					setState(2662);
17920 					match(PARTITIONS);
17921 					setState(2663);
17922 					match(LP_);
17923 					setState(2664);
17924 					partitionExpressions();
17925 					setState(2665);
17926 					match(RP_);
17927 					}
17928 				}
17929 
17930 				}
17931 				break;
17932 			case 2:
17933 				enterOuterAlt(_localctx, 2);
17934 				{
17935 				setState(2669);
17936 				match(FILETABLE_DIRECTORY);
17937 				setState(2670);
17938 				match(EQ_);
17939 				setState(2671);
17940 				ignoredIdentifier();
17941 				}
17942 				break;
17943 			case 3:
17944 				enterOuterAlt(_localctx, 3);
17945 				{
17946 				setState(2672);
17947 				match(FILETABLE_COLLATE_FILENAME);
17948 				setState(2673);
17949 				match(EQ_);
17950 				setState(2676);
17951 				_errHandler.sync(this);
17952 				switch (_input.LA(1)) {
17953 				case IDENTIFIER_:
17954 				case STRING_:
17955 					{
17956 					setState(2674);
17957 					collationName();
17958 					}
17959 					break;
17960 				case DATABASE_DEAULT:
17961 					{
17962 					setState(2675);
17963 					match(DATABASE_DEAULT);
17964 					}
17965 					break;
17966 				default:
17967 					throw new NoViableAltException(this);
17968 				}
17969 				}
17970 				break;
17971 			case 4:
17972 				enterOuterAlt(_localctx, 4);
17973 				{
17974 				setState(2678);
17975 				match(FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME);
17976 				setState(2679);
17977 				match(EQ_);
17978 				setState(2680);
17979 				ignoredIdentifier();
17980 				}
17981 				break;
17982 			case 5:
17983 				enterOuterAlt(_localctx, 5);
17984 				{
17985 				setState(2681);
17986 				match(FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME);
17987 				setState(2682);
17988 				match(EQ_);
17989 				setState(2683);
17990 				ignoredIdentifier();
17991 				}
17992 				break;
17993 			case 6:
17994 				enterOuterAlt(_localctx, 6);
17995 				{
17996 				setState(2684);
17997 				match(FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME);
17998 				setState(2685);
17999 				match(EQ_);
18000 				setState(2686);
18001 				ignoredIdentifier();
18002 				}
18003 				break;
18004 			case 7:
18005 				enterOuterAlt(_localctx, 7);
18006 				{
18007 				setState(2687);
18008 				match(SYSTEM_VERSIONING);
18009 				setState(2688);
18010 				match(EQ_);
18011 				setState(2689);
18012 				match(ON);
18013 				setState(2691);
18014 				_errHandler.sync(this);
18015 				_la = _input.LA(1);
18016 				if (_la==LP_) {
18017 					{
18018 					setState(2690);
18019 					onHistoryTableClause();
18020 					}
18021 				}
18022 
18023 				}
18024 				break;
18025 			case 8:
18026 				enterOuterAlt(_localctx, 8);
18027 				{
18028 				setState(2693);
18029 				match(REMOTE_DATA_ARCHIVE);
18030 				setState(2694);
18031 				match(EQ_);
18032 				setState(2701);
18033 				_errHandler.sync(this);
18034 				switch (_input.LA(1)) {
18035 				case ON:
18036 					{
18037 					setState(2695);
18038 					match(ON);
18039 					setState(2697);
18040 					_errHandler.sync(this);
18041 					_la = _input.LA(1);
18042 					if (_la==LP_) {
18043 						{
18044 						setState(2696);
18045 						tableStretchOptions();
18046 						}
18047 					}
18048 
18049 					}
18050 					break;
18051 				case OFF:
18052 					{
18053 					setState(2699);
18054 					match(OFF);
18055 					setState(2700);
18056 					migrationState_();
18057 					}
18058 					break;
18059 				default:
18060 					throw new NoViableAltException(this);
18061 				}
18062 				}
18063 				break;
18064 			case 9:
18065 				enterOuterAlt(_localctx, 9);
18066 				{
18067 				setState(2703);
18068 				tableOperationOption();
18069 				}
18070 				break;
18071 			case 10:
18072 				enterOuterAlt(_localctx, 10);
18073 				{
18074 				setState(2704);
18075 				distributionOption();
18076 				}
18077 				break;
18078 			case 11:
18079 				enterOuterAlt(_localctx, 11);
18080 				{
18081 				setState(2705);
18082 				dataWareHouseTableOption();
18083 				}
18084 				break;
18085 			case 12:
18086 				enterOuterAlt(_localctx, 12);
18087 				{
18088 				setState(2706);
18089 				dataDelectionOption();
18090 				}
18091 				break;
18092 			case 13:
18093 				enterOuterAlt(_localctx, 13);
18094 				{
18095 				setState(2707);
18096 				dataWareHousePartitionOption();
18097 				}
18098 				break;
18099 			}
18100 		}
18101 		catch (RecognitionException re) {
18102 			_localctx.exception = re;
18103 			_errHandler.reportError(this, re);
18104 			_errHandler.recover(this, re);
18105 		}
18106 		finally {
18107 			exitRule();
18108 		}
18109 		return _localctx;
18110 	}
18111 
18112 	public static class DataDelectionOptionContext extends ParserRuleContext {
18113 		public TerminalNode DATA_DELETION() { return getToken(SQLServerStatementParser.DATA_DELETION, 0); }
18114 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
18115 		public TerminalNode EQ_(int i) {
18116 			return getToken(SQLServerStatementParser.EQ_, i);
18117 		}
18118 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
18119 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18120 		public TerminalNode FILTER_COLUMN() { return getToken(SQLServerStatementParser.FILTER_COLUMN, 0); }
18121 		public ColumnNameContext columnName() {
18122 			return getRuleContext(ColumnNameContext.class,0);
18123 		}
18124 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
18125 		public TerminalNode RETENTION_PERIOD() { return getToken(SQLServerStatementParser.RETENTION_PERIOD, 0); }
18126 		public HistoryRetentionPeriodContext historyRetentionPeriod() {
18127 			return getRuleContext(HistoryRetentionPeriodContext.class,0);
18128 		}
18129 		public DataDelectionOptionContext(ParserRuleContext parent, int invokingState) {
18130 			super(parent, invokingState);
18131 		}
18132 		@Override public int getRuleIndex() { return RULE_dataDelectionOption; }
18133 		@Override
18134 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18135 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataDelectionOption(this);
18136 			else return visitor.visitChildren(this);
18137 		}
18138 	}
18139 
18140 	public final DataDelectionOptionContext dataDelectionOption() throws RecognitionException {
18141 		DataDelectionOptionContext _localctx = new DataDelectionOptionContext(_ctx, getState());
18142 		enterRule(_localctx, 390, RULE_dataDelectionOption);
18143 		try {
18144 			enterOuterAlt(_localctx, 1);
18145 			{
18146 			setState(2710);
18147 			match(DATA_DELETION);
18148 			setState(2711);
18149 			match(EQ_);
18150 			setState(2712);
18151 			match(ON);
18152 			{
18153 			setState(2713);
18154 			match(LP_);
18155 			setState(2714);
18156 			match(FILTER_COLUMN);
18157 			setState(2715);
18158 			match(EQ_);
18159 			setState(2716);
18160 			columnName();
18161 			setState(2717);
18162 			match(COMMA_);
18163 			setState(2718);
18164 			match(RETENTION_PERIOD);
18165 			setState(2719);
18166 			match(EQ_);
18167 			setState(2720);
18168 			historyRetentionPeriod();
18169 			}
18170 			}
18171 		}
18172 		catch (RecognitionException re) {
18173 			_localctx.exception = re;
18174 			_errHandler.reportError(this, re);
18175 			_errHandler.recover(this, re);
18176 		}
18177 		finally {
18178 			exitRule();
18179 		}
18180 		return _localctx;
18181 	}
18182 
18183 	public static class TableStretchOptionsContext extends ParserRuleContext {
18184 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18185 		public List<TableStretchOptionContext> tableStretchOption() {
18186 			return getRuleContexts(TableStretchOptionContext.class);
18187 		}
18188 		public TableStretchOptionContext tableStretchOption(int i) {
18189 			return getRuleContext(TableStretchOptionContext.class,i);
18190 		}
18191 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18192 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18193 		public TerminalNode COMMA_(int i) {
18194 			return getToken(SQLServerStatementParser.COMMA_, i);
18195 		}
18196 		public TableStretchOptionsContext(ParserRuleContext parent, int invokingState) {
18197 			super(parent, invokingState);
18198 		}
18199 		@Override public int getRuleIndex() { return RULE_tableStretchOptions; }
18200 		@Override
18201 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18202 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableStretchOptions(this);
18203 			else return visitor.visitChildren(this);
18204 		}
18205 	}
18206 
18207 	public final TableStretchOptionsContext tableStretchOptions() throws RecognitionException {
18208 		TableStretchOptionsContext _localctx = new TableStretchOptionsContext(_ctx, getState());
18209 		enterRule(_localctx, 392, RULE_tableStretchOptions);
18210 		int _la;
18211 		try {
18212 			enterOuterAlt(_localctx, 1);
18213 			{
18214 			setState(2722);
18215 			match(LP_);
18216 			setState(2723);
18217 			tableStretchOption();
18218 			setState(2728);
18219 			_errHandler.sync(this);
18220 			_la = _input.LA(1);
18221 			while (_la==COMMA_) {
18222 				{
18223 				{
18224 				setState(2724);
18225 				match(COMMA_);
18226 				setState(2725);
18227 				tableStretchOption();
18228 				}
18229 				}
18230 				setState(2730);
18231 				_errHandler.sync(this);
18232 				_la = _input.LA(1);
18233 			}
18234 			setState(2731);
18235 			match(RP_);
18236 			}
18237 		}
18238 		catch (RecognitionException re) {
18239 			_localctx.exception = re;
18240 			_errHandler.reportError(this, re);
18241 			_errHandler.recover(this, re);
18242 		}
18243 		finally {
18244 			exitRule();
18245 		}
18246 		return _localctx;
18247 	}
18248 
18249 	public static class TableStretchOptionContext extends ParserRuleContext {
18250 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
18251 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
18252 		public TerminalNode EQ_(int i) {
18253 			return getToken(SQLServerStatementParser.EQ_, i);
18254 		}
18255 		public TerminalNode OUTBOUND() { return getToken(SQLServerStatementParser.OUTBOUND, 0); }
18256 		public TerminalNode INBOUND() { return getToken(SQLServerStatementParser.INBOUND, 0); }
18257 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
18258 		public TerminalNode FILTER_PREDICATE() { return getToken(SQLServerStatementParser.FILTER_PREDICATE, 0); }
18259 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
18260 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
18261 		public FunctionCallContext functionCall() {
18262 			return getRuleContext(FunctionCallContext.class,0);
18263 		}
18264 		public TableStretchOptionContext(ParserRuleContext parent, int invokingState) {
18265 			super(parent, invokingState);
18266 		}
18267 		@Override public int getRuleIndex() { return RULE_tableStretchOption; }
18268 		@Override
18269 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18270 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableStretchOption(this);
18271 			else return visitor.visitChildren(this);
18272 		}
18273 	}
18274 
18275 	public final TableStretchOptionContext tableStretchOption() throws RecognitionException {
18276 		TableStretchOptionContext _localctx = new TableStretchOptionContext(_ctx, getState());
18277 		enterRule(_localctx, 394, RULE_tableStretchOption);
18278 		int _la;
18279 		try {
18280 			enterOuterAlt(_localctx, 1);
18281 			{
18282 			setState(2740);
18283 			_errHandler.sync(this);
18284 			_la = _input.LA(1);
18285 			if (_la==FILTER_PREDICATE) {
18286 				{
18287 				setState(2733);
18288 				match(FILTER_PREDICATE);
18289 				setState(2734);
18290 				match(EQ_);
18291 				setState(2737);
18292 				_errHandler.sync(this);
18293 				switch (_input.LA(1)) {
18294 				case NULL:
18295 					{
18296 					setState(2735);
18297 					match(NULL);
18298 					}
18299 					break;
18300 				case TRUNCATE:
18301 				case SCHEMA:
18302 				case FUNCTION:
18303 				case TRIGGER:
18304 				case CAST:
18305 				case IF:
18306 				case GROUP:
18307 				case LIMIT:
18308 				case OFFSET:
18309 				case SAVEPOINT:
18310 				case BOOLEAN:
18311 				case CHAR:
18312 				case ARRAY:
18313 				case INTERVAL:
18314 				case DATE:
18315 				case LOCALTIME:
18316 				case LOCALTIMESTAMP:
18317 				case QUARTER:
18318 				case WEEK:
18319 				case DAY:
18320 				case MICROSECOND:
18321 				case MAX:
18322 				case MIN:
18323 				case SUM:
18324 				case COUNT:
18325 				case AVG:
18326 				case ENABLE:
18327 				case DISABLE:
18328 				case INSTANCE:
18329 				case DO:
18330 				case DEFINER:
18331 				case SQL:
18332 				case CASCADED:
18333 				case LOCAL:
18334 				case NEXT:
18335 				case NAME:
18336 				case INTEGER:
18337 				case TYPE:
18338 				case READ_ONLY:
18339 				case DATABASE:
18340 				case DATEPART:
18341 				case PASSWORD:
18342 				case BINARY:
18343 				case HIDDEN_:
18344 				case MOD:
18345 				case PARTITION:
18346 				case PARTITIONS:
18347 				case TOP:
18348 				case ROW:
18349 				case ROWS:
18350 				case XOR:
18351 				case ALWAYS:
18352 				case ROLE:
18353 				case START:
18354 				case ALGORITHM:
18355 				case AUTO:
18356 				case BLOCKERS:
18357 				case CLUSTERED:
18358 				case NONCLUSTERED:
18359 				case COLUMNSTORE:
18360 				case CONTENT:
18361 				case CONVERT:
18362 				case YEARS:
18363 				case MONTHS:
18364 				case WEEKS:
18365 				case DAYS:
18366 				case MINUTES:
18367 				case DENY:
18368 				case DETERMINISTIC:
18369 				case DISTRIBUTION:
18370 				case DOCUMENT:
18371 				case DURABILITY:
18372 				case ENCRYPTED:
18373 				case FILESTREAM:
18374 				case FILETABLE:
18375 				case FILLFACTOR:
18376 				case FOLLOWING:
18377 				case HASH:
18378 				case HEAP:
18379 				case INBOUND:
18380 				case OUTBOUND:
18381 				case UNBOUNDED:
18382 				case INFINITE:
18383 				case LOGIN:
18384 				case MASKED:
18385 				case MAXDOP:
18386 				case MOVE:
18387 				case NOCHECK:
18388 				case OBJECT:
18389 				case OFF:
18390 				case ONLINE:
18391 				case OVER:
18392 				case PAGE:
18393 				case PAUSED:
18394 				case PERIOD:
18395 				case PERSISTED:
18396 				case PRECEDING:
18397 				case RANDOMIZED:
18398 				case RANGE:
18399 				case REBUILD:
18400 				case REPLICATE:
18401 				case REPLICATION:
18402 				case RESUMABLE:
18403 				case ROWGUIDCOL:
18404 				case SAVE:
18405 				case SELF:
18406 				case SPARSE:
18407 				case SWITCH:
18408 				case TRAN:
18409 				case TRANCOUNT:
18410 				case CONTROL:
18411 				case CONCAT:
18412 				case TAKE:
18413 				case OWNERSHIP:
18414 				case DEFINITION:
18415 				case APPLICATION:
18416 				case ASSEMBLY:
18417 				case SYMMETRIC:
18418 				case ASYMMETRIC:
18419 				case SERVER:
18420 				case RECEIVE:
18421 				case CHANGE:
18422 				case TRACE:
18423 				case TRACKING:
18424 				case RESOURCES:
18425 				case SETTINGS:
18426 				case STATE:
18427 				case AVAILABILITY:
18428 				case CREDENTIAL:
18429 				case ENDPOINT:
18430 				case EVENT:
18431 				case NOTIFICATION:
18432 				case LINKED:
18433 				case AUDIT:
18434 				case DDL:
18435 				case XML:
18436 				case IMPERSONATE:
18437 				case SECURABLES:
18438 				case AUTHENTICATE:
18439 				case EXTERNAL:
18440 				case ACCESS:
18441 				case ADMINISTER:
18442 				case BULK:
18443 				case OPERATIONS:
18444 				case UNSAFE:
18445 				case SHUTDOWN:
18446 				case SCOPED:
18447 				case CONFIGURATION:
18448 				case DATASPACE:
18449 				case SERVICE:
18450 				case CERTIFICATE:
18451 				case CONTRACT:
18452 				case ENCRYPTION:
18453 				case MASTER:
18454 				case DATA:
18455 				case SOURCE:
18456 				case FILE:
18457 				case FORMAT:
18458 				case LIBRARY:
18459 				case FULLTEXT:
18460 				case MASK:
18461 				case UNMASK:
18462 				case MESSAGE:
18463 				case REMOTE:
18464 				case BINDING:
18465 				case ROUTE:
18466 				case SECURITY:
18467 				case POLICY:
18468 				case AGGREGATE:
18469 				case QUEUE:
18470 				case RULE:
18471 				case SYNONYM:
18472 				case COLLECTION:
18473 				case SCRIPT:
18474 				case KILL:
18475 				case BACKUP:
18476 				case LOG:
18477 				case SHOWPLAN:
18478 				case SUBSCRIBE:
18479 				case QUERY:
18480 				case NOTIFICATIONS:
18481 				case CHECKPOINT:
18482 				case SEQUENCE:
18483 				case ABORT_AFTER_WAIT:
18484 				case ALLOW_PAGE_LOCKS:
18485 				case ALLOW_ROW_LOCKS:
18486 				case ALL_SPARSE_COLUMNS:
18487 				case BUCKET_COUNT:
18488 				case COLUMNSTORE_ARCHIVE:
18489 				case COLUMN_ENCRYPTION_KEY:
18490 				case COLUMN_SET:
18491 				case COMPRESSION_DELAY:
18492 				case DATABASE_DEAULT:
18493 				case DATA_COMPRESSION:
18494 				case DATA_CONSISTENCY_CHECK:
18495 				case ENCRYPTION_TYPE:
18496 				case SYSTEM_TIME:
18497 				case SYSTEM_VERSIONING:
18498 				case TEXTIMAGE_ON:
18499 				case WAIT_AT_LOW_PRIORITY:
18500 				case STATISTICS_INCREMENTAL:
18501 				case STATISTICS_NORECOMPUTE:
18502 				case ROUND_ROBIN:
18503 				case SCHEMA_AND_DATA:
18504 				case SCHEMA_ONLY:
18505 				case SORT_IN_TEMPDB:
18506 				case IGNORE_DUP_KEY:
18507 				case IMPLICIT_TRANSACTIONS:
18508 				case MAX_DURATION:
18509 				case MEMORY_OPTIMIZED:
18510 				case MIGRATION_STATE:
18511 				case PAD_INDEX:
18512 				case REMOTE_DATA_ARCHIVE:
18513 				case FILESTREAM_ON:
18514 				case FILETABLE_COLLATE_FILENAME:
18515 				case FILETABLE_DIRECTORY:
18516 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
18517 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
18518 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
18519 				case FILTER_PREDICATE:
18520 				case HISTORY_RETENTION_PERIOD:
18521 				case HISTORY_TABLE:
18522 				case LOCK_ESCALATION:
18523 				case DROP_EXISTING:
18524 				case ROW_NUMBER:
18525 				case FIRST:
18526 				case DATETIME2:
18527 				case OUTPUT:
18528 				case INSERTED:
18529 				case DELETED:
18530 				case FILENAME:
18531 				case MAXSIZE:
18532 				case FILEGROWTH:
18533 				case UNLIMITED:
18534 				case KB:
18535 				case MB:
18536 				case GB:
18537 				case TB:
18538 				case MEMORY_OPTIMIZED_DATA:
18539 				case FILEGROUP:
18540 				case NON_TRANSACTED_ACCESS:
18541 				case DB_CHAINING:
18542 				case TRUSTWORTHY:
18543 				case FORWARD_ONLY:
18544 				case KEYSET:
18545 				case FAST_FORWARD:
18546 				case SCROLL_LOCKS:
18547 				case OPTIMISTIC:
18548 				case TYPE_WARNING:
18549 				case SCHEMABINDING:
18550 				case CALLER:
18551 				case OWNER:
18552 				case SNAPSHOT:
18553 				case REPEATABLE:
18554 				case SERIALIZABLE:
18555 				case NATIVE_COMPILATION:
18556 				case VIEW_METADATA:
18557 				case INSTEAD:
18558 				case APPEND:
18559 				case INCREMENT:
18560 				case CACHE:
18561 				case MINVALUE:
18562 				case MAXVALUE:
18563 				case RESTART:
18564 				case LOB_COMPACTION:
18565 				case COMPRESS_ALL_ROW_GROUPS:
18566 				case REORGANIZE:
18567 				case RESUME:
18568 				case PAUSE:
18569 				case ABORT:
18570 				case ACCELERATED_DATABASE_RECOVERY:
18571 				case PERSISTENT_VERSION_STORE_FILEGROUP:
18572 				case IMMEDIATE:
18573 				case NO_WAIT:
18574 				case TARGET_RECOVERY_TIME:
18575 				case SECONDS:
18576 				case HONOR_BROKER_PRIORITY:
18577 				case ERROR_BROKER_CONVERSATIONS:
18578 				case NEW_BROKER:
18579 				case DISABLE_BROKER:
18580 				case ENABLE_BROKER:
18581 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
18582 				case READ_COMMITTED_SNAPSHOT:
18583 				case ALLOW_SNAPSHOT_ISOLATION:
18584 				case RECURSIVE_TRIGGERS:
18585 				case QUOTED_IDENTIFIER:
18586 				case NUMERIC_ROUNDABORT:
18587 				case CONCAT_NULL_YIELDS_NULL:
18588 				case COMPATIBILITY_LEVEL:
18589 				case ARITHABORT:
18590 				case ANSI_WARNINGS:
18591 				case ANSI_PADDING:
18592 				case ANSI_NULLS:
18593 				case ANSI_NULL_DEFAULT:
18594 				case PAGE_VERIFY:
18595 				case CHECKSUM:
18596 				case TORN_PAGE_DETECTION:
18597 				case BULK_LOGGED:
18598 				case RECOVERY:
18599 				case TOTAL_EXECUTION_CPU_TIME_MS:
18600 				case TOTAL_COMPILE_CPU_TIME_MS:
18601 				case STALE_CAPTURE_POLICY_THRESHOLD:
18602 				case EXECUTION_COUNT:
18603 				case QUERY_CAPTURE_POLICY:
18604 				case WAIT_STATS_CAPTURE_MODE:
18605 				case MAX_PLANS_PER_QUERY:
18606 				case QUERY_CAPTURE_MODE:
18607 				case SIZE_BASED_CLEANUP_MODE:
18608 				case INTERVAL_LENGTH_MINUTES:
18609 				case MAX_STORAGE_SIZE_MB:
18610 				case DATA_FLUSH_INTERVAL_SECONDS:
18611 				case CLEANUP_POLICY:
18612 				case CUSTOM:
18613 				case STALE_QUERY_THRESHOLD_DAYS:
18614 				case OPERATION_MODE:
18615 				case QUERY_STORE:
18616 				case CURSOR_DEFAULT:
18617 				case GLOBAL:
18618 				case CURSOR_CLOSE_ON_COMMIT:
18619 				case HOURS:
18620 				case CHANGE_RETENTION:
18621 				case AUTO_CLEANUP:
18622 				case CHANGE_TRACKING:
18623 				case AUTOMATIC_TUNING:
18624 				case FORCE_LAST_GOOD_PLAN:
18625 				case AUTO_UPDATE_STATISTICS_ASYNC:
18626 				case AUTO_UPDATE_STATISTICS:
18627 				case AUTO_SHRINK:
18628 				case AUTO_CREATE_STATISTICS:
18629 				case INCREMENTAL:
18630 				case AUTO_CLOSE:
18631 				case DATA_RETENTION:
18632 				case TEMPORAL_HISTORY_RETENTION:
18633 				case EDITION:
18634 				case MIXED_PAGE_ALLOCATION:
18635 				case DISABLED:
18636 				case ALLOWED:
18637 				case HADR:
18638 				case MULTI_USER:
18639 				case RESTRICTED_USER:
18640 				case SINGLE_USER:
18641 				case OFFLINE:
18642 				case EMERGENCY:
18643 				case SUSPEND:
18644 				case DATE_CORRELATION_OPTIMIZATION:
18645 				case ELASTIC_POOL:
18646 				case SERVICE_OBJECTIVE:
18647 				case DATABASE_NAME:
18648 				case ALLOW_CONNECTIONS:
18649 				case GEO:
18650 				case NAMED:
18651 				case DATEFIRST:
18652 				case BACKUP_STORAGE_REDUNDANCY:
18653 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
18654 				case SECONDARY:
18655 				case FAILOVER:
18656 				case DEFAULT_FULLTEXT_LANGUAGE:
18657 				case DEFAULT_LANGUAGE:
18658 				case INLINE:
18659 				case NESTED_TRIGGERS:
18660 				case TRANSFORM_NOISE_WORDS:
18661 				case TWO_DIGIT_YEAR_CUTOFF:
18662 				case PERSISTENT_LOG_BUFFER:
18663 				case DIRECTORY_NAME:
18664 				case DATEFORMAT:
18665 				case DELAYED_DURABILITY:
18666 				case AUTHORIZATION:
18667 				case TRANSFER:
18668 				case SEARCH:
18669 				case MEMBER:
18670 				case IDENTIFIER_:
18671 				case DELIMITED_IDENTIFIER_:
18672 					{
18673 					setState(2736);
18674 					functionCall();
18675 					}
18676 					break;
18677 				default:
18678 					throw new NoViableAltException(this);
18679 				}
18680 				setState(2739);
18681 				match(COMMA_);
18682 				}
18683 			}
18684 
18685 			setState(2742);
18686 			match(MIGRATION_STATE);
18687 			setState(2743);
18688 			match(EQ_);
18689 			setState(2744);
18690 			_la = _input.LA(1);
18691 			if ( !(((((_la - 266)) & ~0x3f) == 0 && ((1L << (_la - 266)) & ((1L << (INBOUND - 266)) | (1L << (OUTBOUND - 266)) | (1L << (PAUSED - 266)))) != 0)) ) {
18692 			_errHandler.recoverInline(this);
18693 			}
18694 			else {
18695 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
18696 				_errHandler.reportMatch(this);
18697 				consume();
18698 			}
18699 			}
18700 		}
18701 		catch (RecognitionException re) {
18702 			_localctx.exception = re;
18703 			_errHandler.reportError(this, re);
18704 			_errHandler.recover(this, re);
18705 		}
18706 		finally {
18707 			exitRule();
18708 		}
18709 		return _localctx;
18710 	}
18711 
18712 	public static class MigrationState_Context extends ParserRuleContext {
18713 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18714 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
18715 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
18716 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
18717 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18718 		public MigrationState_Context(ParserRuleContext parent, int invokingState) {
18719 			super(parent, invokingState);
18720 		}
18721 		@Override public int getRuleIndex() { return RULE_migrationState_; }
18722 		@Override
18723 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18724 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMigrationState_(this);
18725 			else return visitor.visitChildren(this);
18726 		}
18727 	}
18728 
18729 	public final MigrationState_Context migrationState_() throws RecognitionException {
18730 		MigrationState_Context _localctx = new MigrationState_Context(_ctx, getState());
18731 		enterRule(_localctx, 396, RULE_migrationState_);
18732 		try {
18733 			enterOuterAlt(_localctx, 1);
18734 			{
18735 			setState(2746);
18736 			match(LP_);
18737 			setState(2747);
18738 			match(MIGRATION_STATE);
18739 			setState(2748);
18740 			match(EQ_);
18741 			setState(2749);
18742 			match(PAUSED);
18743 			setState(2750);
18744 			match(RP_);
18745 			}
18746 		}
18747 		catch (RecognitionException re) {
18748 			_localctx.exception = re;
18749 			_errHandler.reportError(this, re);
18750 			_errHandler.recover(this, re);
18751 		}
18752 		finally {
18753 			exitRule();
18754 		}
18755 		return _localctx;
18756 	}
18757 
18758 	public static class TableOperationOptionContext extends ParserRuleContext {
18759 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
18760 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
18761 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
18762 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
18763 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
18764 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
18765 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
18766 		public OnHistoryTableClauseContext onHistoryTableClause() {
18767 			return getRuleContext(OnHistoryTableClauseContext.class,0);
18768 		}
18769 		public TableOperationOptionContext(ParserRuleContext parent, int invokingState) {
18770 			super(parent, invokingState);
18771 		}
18772 		@Override public int getRuleIndex() { return RULE_tableOperationOption; }
18773 		@Override
18774 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18775 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOperationOption(this);
18776 			else return visitor.visitChildren(this);
18777 		}
18778 	}
18779 
18780 	public final TableOperationOptionContext tableOperationOption() throws RecognitionException {
18781 		TableOperationOptionContext _localctx = new TableOperationOptionContext(_ctx, getState());
18782 		enterRule(_localctx, 398, RULE_tableOperationOption);
18783 		int _la;
18784 		try {
18785 			setState(2764);
18786 			_errHandler.sync(this);
18787 			switch (_input.LA(1)) {
18788 			case MEMORY_OPTIMIZED:
18789 				enterOuterAlt(_localctx, 1);
18790 				{
18791 				{
18792 				setState(2752);
18793 				match(MEMORY_OPTIMIZED);
18794 				setState(2753);
18795 				match(EQ_);
18796 				setState(2754);
18797 				match(ON);
18798 				}
18799 				}
18800 				break;
18801 			case DURABILITY:
18802 				enterOuterAlt(_localctx, 2);
18803 				{
18804 				{
18805 				setState(2755);
18806 				match(DURABILITY);
18807 				setState(2756);
18808 				match(EQ_);
18809 				setState(2757);
18810 				_la = _input.LA(1);
18811 				if ( !(_la==SCHEMA_AND_DATA || _la==SCHEMA_ONLY) ) {
18812 				_errHandler.recoverInline(this);
18813 				}
18814 				else {
18815 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
18816 					_errHandler.reportMatch(this);
18817 					consume();
18818 				}
18819 				}
18820 				}
18821 				break;
18822 			case SYSTEM_VERSIONING:
18823 				enterOuterAlt(_localctx, 3);
18824 				{
18825 				{
18826 				setState(2758);
18827 				match(SYSTEM_VERSIONING);
18828 				setState(2759);
18829 				match(EQ_);
18830 				setState(2760);
18831 				match(ON);
18832 				setState(2762);
18833 				_errHandler.sync(this);
18834 				_la = _input.LA(1);
18835 				if (_la==LP_) {
18836 					{
18837 					setState(2761);
18838 					onHistoryTableClause();
18839 					}
18840 				}
18841 
18842 				}
18843 				}
18844 				break;
18845 			default:
18846 				throw new NoViableAltException(this);
18847 			}
18848 		}
18849 		catch (RecognitionException re) {
18850 			_localctx.exception = re;
18851 			_errHandler.reportError(this, re);
18852 			_errHandler.recover(this, re);
18853 		}
18854 		finally {
18855 			exitRule();
18856 		}
18857 		return _localctx;
18858 	}
18859 
18860 	public static class DistributionOptionContext extends ParserRuleContext {
18861 		public TerminalNode DISTRIBUTION() { return getToken(SQLServerStatementParser.DISTRIBUTION, 0); }
18862 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
18863 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
18864 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18865 		public ColumnNameContext columnName() {
18866 			return getRuleContext(ColumnNameContext.class,0);
18867 		}
18868 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18869 		public TerminalNode ROUND_ROBIN() { return getToken(SQLServerStatementParser.ROUND_ROBIN, 0); }
18870 		public TerminalNode REPLICATE() { return getToken(SQLServerStatementParser.REPLICATE, 0); }
18871 		public DistributionOptionContext(ParserRuleContext parent, int invokingState) {
18872 			super(parent, invokingState);
18873 		}
18874 		@Override public int getRuleIndex() { return RULE_distributionOption; }
18875 		@Override
18876 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18877 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistributionOption(this);
18878 			else return visitor.visitChildren(this);
18879 		}
18880 	}
18881 
18882 	public final DistributionOptionContext distributionOption() throws RecognitionException {
18883 		DistributionOptionContext _localctx = new DistributionOptionContext(_ctx, getState());
18884 		enterRule(_localctx, 400, RULE_distributionOption);
18885 		try {
18886 			enterOuterAlt(_localctx, 1);
18887 			{
18888 			setState(2766);
18889 			match(DISTRIBUTION);
18890 			setState(2767);
18891 			match(EQ_);
18892 			setState(2775);
18893 			_errHandler.sync(this);
18894 			switch (_input.LA(1)) {
18895 			case HASH:
18896 				{
18897 				setState(2768);
18898 				match(HASH);
18899 				setState(2769);
18900 				match(LP_);
18901 				setState(2770);
18902 				columnName();
18903 				setState(2771);
18904 				match(RP_);
18905 				}
18906 				break;
18907 			case ROUND_ROBIN:
18908 				{
18909 				setState(2773);
18910 				match(ROUND_ROBIN);
18911 				}
18912 				break;
18913 			case REPLICATE:
18914 				{
18915 				setState(2774);
18916 				match(REPLICATE);
18917 				}
18918 				break;
18919 			default:
18920 				throw new NoViableAltException(this);
18921 			}
18922 			}
18923 		}
18924 		catch (RecognitionException re) {
18925 			_localctx.exception = re;
18926 			_errHandler.reportError(this, re);
18927 			_errHandler.recover(this, re);
18928 		}
18929 		finally {
18930 			exitRule();
18931 		}
18932 		return _localctx;
18933 	}
18934 
18935 	public static class DataWareHouseTableOptionContext extends ParserRuleContext {
18936 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
18937 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
18938 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
18939 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
18940 		public ColumnNamesContext columnNames() {
18941 			return getRuleContext(ColumnNamesContext.class,0);
18942 		}
18943 		public TerminalNode HEAP() { return getToken(SQLServerStatementParser.HEAP, 0); }
18944 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18945 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18946 		public List<ColumnNameContext> columnName() {
18947 			return getRuleContexts(ColumnNameContext.class);
18948 		}
18949 		public ColumnNameContext columnName(int i) {
18950 			return getRuleContext(ColumnNameContext.class,i);
18951 		}
18952 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18953 		public TerminalNode COMMA_(int i) {
18954 			return getToken(SQLServerStatementParser.COMMA_, i);
18955 		}
18956 		public List<TerminalNode> ASC() { return getTokens(SQLServerStatementParser.ASC); }
18957 		public TerminalNode ASC(int i) {
18958 			return getToken(SQLServerStatementParser.ASC, i);
18959 		}
18960 		public List<TerminalNode> DESC() { return getTokens(SQLServerStatementParser.DESC); }
18961 		public TerminalNode DESC(int i) {
18962 			return getToken(SQLServerStatementParser.DESC, i);
18963 		}
18964 		public DataWareHouseTableOptionContext(ParserRuleContext parent, int invokingState) {
18965 			super(parent, invokingState);
18966 		}
18967 		@Override public int getRuleIndex() { return RULE_dataWareHouseTableOption; }
18968 		@Override
18969 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18970 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataWareHouseTableOption(this);
18971 			else return visitor.visitChildren(this);
18972 		}
18973 	}
18974 
18975 	public final DataWareHouseTableOptionContext dataWareHouseTableOption() throws RecognitionException {
18976 		DataWareHouseTableOptionContext _localctx = new DataWareHouseTableOptionContext(_ctx, getState());
18977 		enterRule(_localctx, 402, RULE_dataWareHouseTableOption);
18978 		int _la;
18979 		try {
18980 			setState(2805);
18981 			_errHandler.sync(this);
18982 			switch ( getInterpreter().adaptivePredict(_input,233,_ctx) ) {
18983 			case 1:
18984 				enterOuterAlt(_localctx, 1);
18985 				{
18986 				setState(2777);
18987 				match(CLUSTERED);
18988 				setState(2778);
18989 				match(COLUMNSTORE);
18990 				setState(2779);
18991 				match(INDEX);
18992 				}
18993 				break;
18994 			case 2:
18995 				enterOuterAlt(_localctx, 2);
18996 				{
18997 				setState(2780);
18998 				match(CLUSTERED);
18999 				setState(2781);
19000 				match(COLUMNSTORE);
19001 				setState(2782);
19002 				match(INDEX);
19003 				setState(2783);
19004 				match(ORDER);
19005 				setState(2784);
19006 				columnNames();
19007 				}
19008 				break;
19009 			case 3:
19010 				enterOuterAlt(_localctx, 3);
19011 				{
19012 				setState(2785);
19013 				match(HEAP);
19014 				}
19015 				break;
19016 			case 4:
19017 				enterOuterAlt(_localctx, 4);
19018 				{
19019 				setState(2786);
19020 				match(CLUSTERED);
19021 				setState(2787);
19022 				match(INDEX);
19023 				setState(2788);
19024 				match(LP_);
19025 				{
19026 				setState(2789);
19027 				columnName();
19028 				setState(2791);
19029 				_errHandler.sync(this);
19030 				_la = _input.LA(1);
19031 				if (_la==ASC || _la==DESC) {
19032 					{
19033 					setState(2790);
19034 					_la = _input.LA(1);
19035 					if ( !(_la==ASC || _la==DESC) ) {
19036 					_errHandler.recoverInline(this);
19037 					}
19038 					else {
19039 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19040 						_errHandler.reportMatch(this);
19041 						consume();
19042 					}
19043 					}
19044 				}
19045 
19046 				}
19047 				setState(2800);
19048 				_errHandler.sync(this);
19049 				_la = _input.LA(1);
19050 				while (_la==COMMA_) {
19051 					{
19052 					{
19053 					setState(2793);
19054 					match(COMMA_);
19055 					{
19056 					setState(2794);
19057 					columnName();
19058 					setState(2796);
19059 					_errHandler.sync(this);
19060 					_la = _input.LA(1);
19061 					if (_la==ASC || _la==DESC) {
19062 						{
19063 						setState(2795);
19064 						_la = _input.LA(1);
19065 						if ( !(_la==ASC || _la==DESC) ) {
19066 						_errHandler.recoverInline(this);
19067 						}
19068 						else {
19069 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19070 							_errHandler.reportMatch(this);
19071 							consume();
19072 						}
19073 						}
19074 					}
19075 
19076 					}
19077 					}
19078 					}
19079 					setState(2802);
19080 					_errHandler.sync(this);
19081 					_la = _input.LA(1);
19082 				}
19083 				setState(2803);
19084 				match(RP_);
19085 				}
19086 				break;
19087 			}
19088 		}
19089 		catch (RecognitionException re) {
19090 			_localctx.exception = re;
19091 			_errHandler.reportError(this, re);
19092 			_errHandler.recover(this, re);
19093 		}
19094 		finally {
19095 			exitRule();
19096 		}
19097 		return _localctx;
19098 	}
19099 
19100 	public static class DataWareHousePartitionOptionContext extends ParserRuleContext {
19101 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
19102 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
19103 		public TerminalNode LP_(int i) {
19104 			return getToken(SQLServerStatementParser.LP_, i);
19105 		}
19106 		public ColumnNameContext columnName() {
19107 			return getRuleContext(ColumnNameContext.class,0);
19108 		}
19109 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
19110 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
19111 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
19112 		public List<SimpleExprContext> simpleExpr() {
19113 			return getRuleContexts(SimpleExprContext.class);
19114 		}
19115 		public SimpleExprContext simpleExpr(int i) {
19116 			return getRuleContext(SimpleExprContext.class,i);
19117 		}
19118 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
19119 		public TerminalNode RP_(int i) {
19120 			return getToken(SQLServerStatementParser.RP_, i);
19121 		}
19122 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
19123 		public TerminalNode COMMA_(int i) {
19124 			return getToken(SQLServerStatementParser.COMMA_, i);
19125 		}
19126 		public TerminalNode LEFT() { return getToken(SQLServerStatementParser.LEFT, 0); }
19127 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
19128 		public DataWareHousePartitionOptionContext(ParserRuleContext parent, int invokingState) {
19129 			super(parent, invokingState);
19130 		}
19131 		@Override public int getRuleIndex() { return RULE_dataWareHousePartitionOption; }
19132 		@Override
19133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataWareHousePartitionOption(this);
19135 			else return visitor.visitChildren(this);
19136 		}
19137 	}
19138 
19139 	public final DataWareHousePartitionOptionContext dataWareHousePartitionOption() throws RecognitionException {
19140 		DataWareHousePartitionOptionContext _localctx = new DataWareHousePartitionOptionContext(_ctx, getState());
19141 		enterRule(_localctx, 404, RULE_dataWareHousePartitionOption);
19142 		int _la;
19143 		try {
19144 			enterOuterAlt(_localctx, 1);
19145 			{
19146 			{
19147 			setState(2807);
19148 			match(PARTITION);
19149 			setState(2808);
19150 			match(LP_);
19151 			setState(2809);
19152 			columnName();
19153 			setState(2810);
19154 			match(RANGE);
19155 			setState(2812);
19156 			_errHandler.sync(this);
19157 			_la = _input.LA(1);
19158 			if (_la==LEFT || _la==RIGHT) {
19159 				{
19160 				setState(2811);
19161 				_la = _input.LA(1);
19162 				if ( !(_la==LEFT || _la==RIGHT) ) {
19163 				_errHandler.recoverInline(this);
19164 				}
19165 				else {
19166 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19167 					_errHandler.reportMatch(this);
19168 					consume();
19169 				}
19170 				}
19171 			}
19172 
19173 			setState(2814);
19174 			match(FOR);
19175 			setState(2815);
19176 			match(VALUES);
19177 			setState(2816);
19178 			match(LP_);
19179 			setState(2817);
19180 			simpleExpr(0);
19181 			setState(2822);
19182 			_errHandler.sync(this);
19183 			_la = _input.LA(1);
19184 			while (_la==COMMA_) {
19185 				{
19186 				{
19187 				setState(2818);
19188 				match(COMMA_);
19189 				setState(2819);
19190 				simpleExpr(0);
19191 				}
19192 				}
19193 				setState(2824);
19194 				_errHandler.sync(this);
19195 				_la = _input.LA(1);
19196 			}
19197 			setState(2825);
19198 			match(RP_);
19199 			setState(2826);
19200 			match(RP_);
19201 			}
19202 			}
19203 		}
19204 		catch (RecognitionException re) {
19205 			_localctx.exception = re;
19206 			_errHandler.reportError(this, re);
19207 			_errHandler.recover(this, re);
19208 		}
19209 		finally {
19210 			exitRule();
19211 		}
19212 		return _localctx;
19213 	}
19214 
19215 	public static class CreateIndexSpecificationContext extends ParserRuleContext {
19216 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
19217 		public ClusterOptionContext clusterOption() {
19218 			return getRuleContext(ClusterOptionContext.class,0);
19219 		}
19220 		public CreateIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
19221 			super(parent, invokingState);
19222 		}
19223 		@Override public int getRuleIndex() { return RULE_createIndexSpecification; }
19224 		@Override
19225 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19226 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndexSpecification(this);
19227 			else return visitor.visitChildren(this);
19228 		}
19229 	}
19230 
19231 	public final CreateIndexSpecificationContext createIndexSpecification() throws RecognitionException {
19232 		CreateIndexSpecificationContext _localctx = new CreateIndexSpecificationContext(_ctx, getState());
19233 		enterRule(_localctx, 406, RULE_createIndexSpecification);
19234 		int _la;
19235 		try {
19236 			enterOuterAlt(_localctx, 1);
19237 			{
19238 			setState(2829);
19239 			_errHandler.sync(this);
19240 			_la = _input.LA(1);
19241 			if (_la==UNIQUE) {
19242 				{
19243 				setState(2828);
19244 				match(UNIQUE);
19245 				}
19246 			}
19247 
19248 			setState(2832);
19249 			_errHandler.sync(this);
19250 			_la = _input.LA(1);
19251 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
19252 				{
19253 				setState(2831);
19254 				clusterOption();
19255 				}
19256 			}
19257 
19258 			}
19259 		}
19260 		catch (RecognitionException re) {
19261 			_localctx.exception = re;
19262 			_errHandler.reportError(this, re);
19263 			_errHandler.recover(this, re);
19264 		}
19265 		finally {
19266 			exitRule();
19267 		}
19268 		return _localctx;
19269 	}
19270 
19271 	public static class AlterDefinitionClauseContext extends ParserRuleContext {
19272 		public AddColumnSpecificationContext addColumnSpecification() {
19273 			return getRuleContext(AddColumnSpecificationContext.class,0);
19274 		}
19275 		public ModifyColumnSpecificationContext modifyColumnSpecification() {
19276 			return getRuleContext(ModifyColumnSpecificationContext.class,0);
19277 		}
19278 		public AlterDropContext alterDrop() {
19279 			return getRuleContext(AlterDropContext.class,0);
19280 		}
19281 		public AlterCheckConstraintContext alterCheckConstraint() {
19282 			return getRuleContext(AlterCheckConstraintContext.class,0);
19283 		}
19284 		public AlterTableTriggerContext alterTableTrigger() {
19285 			return getRuleContext(AlterTableTriggerContext.class,0);
19286 		}
19287 		public AlterSwitchContext alterSwitch() {
19288 			return getRuleContext(AlterSwitchContext.class,0);
19289 		}
19290 		public AlterSetContext alterSet() {
19291 			return getRuleContext(AlterSetContext.class,0);
19292 		}
19293 		public AlterTableOptionContext alterTableOption() {
19294 			return getRuleContext(AlterTableOptionContext.class,0);
19295 		}
19296 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
19297 		public AlterDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
19298 			super(parent, invokingState);
19299 		}
19300 		@Override public int getRuleIndex() { return RULE_alterDefinitionClause; }
19301 		@Override
19302 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19303 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDefinitionClause(this);
19304 			else return visitor.visitChildren(this);
19305 		}
19306 	}
19307 
19308 	public final AlterDefinitionClauseContext alterDefinitionClause() throws RecognitionException {
19309 		AlterDefinitionClauseContext _localctx = new AlterDefinitionClauseContext(_ctx, getState());
19310 		enterRule(_localctx, 408, RULE_alterDefinitionClause);
19311 		try {
19312 			setState(2843);
19313 			_errHandler.sync(this);
19314 			switch ( getInterpreter().adaptivePredict(_input,238,_ctx) ) {
19315 			case 1:
19316 				enterOuterAlt(_localctx, 1);
19317 				{
19318 				setState(2834);
19319 				addColumnSpecification();
19320 				}
19321 				break;
19322 			case 2:
19323 				enterOuterAlt(_localctx, 2);
19324 				{
19325 				setState(2835);
19326 				modifyColumnSpecification();
19327 				}
19328 				break;
19329 			case 3:
19330 				enterOuterAlt(_localctx, 3);
19331 				{
19332 				setState(2836);
19333 				alterDrop();
19334 				}
19335 				break;
19336 			case 4:
19337 				enterOuterAlt(_localctx, 4);
19338 				{
19339 				setState(2837);
19340 				alterCheckConstraint();
19341 				}
19342 				break;
19343 			case 5:
19344 				enterOuterAlt(_localctx, 5);
19345 				{
19346 				setState(2838);
19347 				alterTableTrigger();
19348 				}
19349 				break;
19350 			case 6:
19351 				enterOuterAlt(_localctx, 6);
19352 				{
19353 				setState(2839);
19354 				alterSwitch();
19355 				}
19356 				break;
19357 			case 7:
19358 				enterOuterAlt(_localctx, 7);
19359 				{
19360 				setState(2840);
19361 				alterSet();
19362 				}
19363 				break;
19364 			case 8:
19365 				enterOuterAlt(_localctx, 8);
19366 				{
19367 				setState(2841);
19368 				alterTableOption();
19369 				}
19370 				break;
19371 			case 9:
19372 				enterOuterAlt(_localctx, 9);
19373 				{
19374 				setState(2842);
19375 				match(REBUILD);
19376 				}
19377 				break;
19378 			}
19379 		}
19380 		catch (RecognitionException re) {
19381 			_localctx.exception = re;
19382 			_errHandler.reportError(this, re);
19383 			_errHandler.recover(this, re);
19384 		}
19385 		finally {
19386 			exitRule();
19387 		}
19388 		return _localctx;
19389 	}
19390 
19391 	public static class AddColumnSpecificationContext extends ParserRuleContext {
19392 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
19393 		public AlterColumnAddOptionsContext alterColumnAddOptions() {
19394 			return getRuleContext(AlterColumnAddOptionsContext.class,0);
19395 		}
19396 		public GeneratedColumnNamesClauseContext generatedColumnNamesClause() {
19397 			return getRuleContext(GeneratedColumnNamesClauseContext.class,0);
19398 		}
19399 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
19400 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
19401 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
19402 		public AddColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
19403 			super(parent, invokingState);
19404 		}
19405 		@Override public int getRuleIndex() { return RULE_addColumnSpecification; }
19406 		@Override
19407 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19408 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddColumnSpecification(this);
19409 			else return visitor.visitChildren(this);
19410 		}
19411 	}
19412 
19413 	public final AddColumnSpecificationContext addColumnSpecification() throws RecognitionException {
19414 		AddColumnSpecificationContext _localctx = new AddColumnSpecificationContext(_ctx, getState());
19415 		enterRule(_localctx, 410, RULE_addColumnSpecification);
19416 		int _la;
19417 		try {
19418 			enterOuterAlt(_localctx, 1);
19419 			{
19420 			setState(2847);
19421 			_errHandler.sync(this);
19422 			_la = _input.LA(1);
19423 			if (_la==WITH) {
19424 				{
19425 				setState(2845);
19426 				match(WITH);
19427 				setState(2846);
19428 				_la = _input.LA(1);
19429 				if ( !(_la==CHECK || _la==NOCHECK) ) {
19430 				_errHandler.recoverInline(this);
19431 				}
19432 				else {
19433 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
19434 					_errHandler.reportMatch(this);
19435 					consume();
19436 				}
19437 				}
19438 			}
19439 
19440 			setState(2849);
19441 			match(ADD);
19442 			setState(2852);
19443 			_errHandler.sync(this);
19444 			switch ( getInterpreter().adaptivePredict(_input,240,_ctx) ) {
19445 			case 1:
19446 				{
19447 				setState(2850);
19448 				alterColumnAddOptions();
19449 				}
19450 				break;
19451 			case 2:
19452 				{
19453 				setState(2851);
19454 				generatedColumnNamesClause();
19455 				}
19456 				break;
19457 			}
19458 			}
19459 		}
19460 		catch (RecognitionException re) {
19461 			_localctx.exception = re;
19462 			_errHandler.reportError(this, re);
19463 			_errHandler.recover(this, re);
19464 		}
19465 		finally {
19466 			exitRule();
19467 		}
19468 		return _localctx;
19469 	}
19470 
19471 	public static class ModifyColumnSpecificationContext extends ParserRuleContext {
19472 		public AlterColumnOperationContext alterColumnOperation() {
19473 			return getRuleContext(AlterColumnOperationContext.class,0);
19474 		}
19475 		public DataTypeContext dataType() {
19476 			return getRuleContext(DataTypeContext.class,0);
19477 		}
19478 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
19479 		public CollationNameContext collationName() {
19480 			return getRuleContext(CollationNameContext.class,0);
19481 		}
19482 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
19483 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
19484 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
19485 		public ModifyColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
19486 			super(parent, invokingState);
19487 		}
19488 		@Override public int getRuleIndex() { return RULE_modifyColumnSpecification; }
19489 		@Override
19490 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19491 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitModifyColumnSpecification(this);
19492 			else return visitor.visitChildren(this);
19493 		}
19494 	}
19495 
19496 	public final ModifyColumnSpecificationContext modifyColumnSpecification() throws RecognitionException {
19497 		ModifyColumnSpecificationContext _localctx = new ModifyColumnSpecificationContext(_ctx, getState());
19498 		enterRule(_localctx, 412, RULE_modifyColumnSpecification);
19499 		int _la;
19500 		try {
19501 			enterOuterAlt(_localctx, 1);
19502 			{
19503 			setState(2854);
19504 			alterColumnOperation();
19505 			setState(2855);
19506 			dataType();
19507 			setState(2858);
19508 			_errHandler.sync(this);
19509 			_la = _input.LA(1);
19510 			if (_la==COLLATE) {
19511 				{
19512 				setState(2856);
19513 				match(COLLATE);
19514 				setState(2857);
19515 				collationName();
19516 				}
19517 			}
19518 
19519 			setState(2863);
19520 			_errHandler.sync(this);
19521 			switch (_input.LA(1)) {
19522 			case NULL:
19523 				{
19524 				setState(2860);
19525 				match(NULL);
19526 				}
19527 				break;
19528 			case NOT:
19529 				{
19530 				setState(2861);
19531 				match(NOT);
19532 				setState(2862);
19533 				match(NULL);
19534 				}
19535 				break;
19536 			case EOF:
19537 			case COMMA_:
19538 			case SEMI_:
19539 			case SELECT:
19540 			case INSERT:
19541 			case UPDATE:
19542 			case DELETE:
19543 			case CREATE:
19544 			case ALTER:
19545 			case DROP:
19546 			case TRUNCATE:
19547 			case SET:
19548 			case WITH:
19549 			case DECLARE:
19550 			case RETURN:
19551 			case END:
19552 			case SPARSE:
19553 				break;
19554 			default:
19555 				break;
19556 			}
19557 			setState(2866);
19558 			_errHandler.sync(this);
19559 			_la = _input.LA(1);
19560 			if (_la==SPARSE) {
19561 				{
19562 				setState(2865);
19563 				match(SPARSE);
19564 				}
19565 			}
19566 
19567 			}
19568 		}
19569 		catch (RecognitionException re) {
19570 			_localctx.exception = re;
19571 			_errHandler.reportError(this, re);
19572 			_errHandler.recover(this, re);
19573 		}
19574 		finally {
19575 			exitRule();
19576 		}
19577 		return _localctx;
19578 	}
19579 
19580 	public static class AlterColumnOperationContext extends ParserRuleContext {
19581 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
19582 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
19583 		public ColumnNameContext columnName() {
19584 			return getRuleContext(ColumnNameContext.class,0);
19585 		}
19586 		public AlterColumnOperationContext(ParserRuleContext parent, int invokingState) {
19587 			super(parent, invokingState);
19588 		}
19589 		@Override public int getRuleIndex() { return RULE_alterColumnOperation; }
19590 		@Override
19591 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19592 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnOperation(this);
19593 			else return visitor.visitChildren(this);
19594 		}
19595 	}
19596 
19597 	public final AlterColumnOperationContext alterColumnOperation() throws RecognitionException {
19598 		AlterColumnOperationContext _localctx = new AlterColumnOperationContext(_ctx, getState());
19599 		enterRule(_localctx, 414, RULE_alterColumnOperation);
19600 		try {
19601 			enterOuterAlt(_localctx, 1);
19602 			{
19603 			setState(2868);
19604 			match(ALTER);
19605 			setState(2869);
19606 			match(COLUMN);
19607 			setState(2870);
19608 			columnName();
19609 			}
19610 		}
19611 		catch (RecognitionException re) {
19612 			_localctx.exception = re;
19613 			_errHandler.reportError(this, re);
19614 			_errHandler.recover(this, re);
19615 		}
19616 		finally {
19617 			exitRule();
19618 		}
19619 		return _localctx;
19620 	}
19621 
19622 	public static class AlterColumnAddOptionsContext extends ParserRuleContext {
19623 		public List<AlterColumnAddOptionContext> alterColumnAddOption() {
19624 			return getRuleContexts(AlterColumnAddOptionContext.class);
19625 		}
19626 		public AlterColumnAddOptionContext alterColumnAddOption(int i) {
19627 			return getRuleContext(AlterColumnAddOptionContext.class,i);
19628 		}
19629 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
19630 		public TerminalNode COMMA_(int i) {
19631 			return getToken(SQLServerStatementParser.COMMA_, i);
19632 		}
19633 		public AlterColumnAddOptionsContext(ParserRuleContext parent, int invokingState) {
19634 			super(parent, invokingState);
19635 		}
19636 		@Override public int getRuleIndex() { return RULE_alterColumnAddOptions; }
19637 		@Override
19638 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19639 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnAddOptions(this);
19640 			else return visitor.visitChildren(this);
19641 		}
19642 	}
19643 
19644 	public final AlterColumnAddOptionsContext alterColumnAddOptions() throws RecognitionException {
19645 		AlterColumnAddOptionsContext _localctx = new AlterColumnAddOptionsContext(_ctx, getState());
19646 		enterRule(_localctx, 416, RULE_alterColumnAddOptions);
19647 		try {
19648 			int _alt;
19649 			enterOuterAlt(_localctx, 1);
19650 			{
19651 			setState(2872);
19652 			alterColumnAddOption();
19653 			setState(2877);
19654 			_errHandler.sync(this);
19655 			_alt = getInterpreter().adaptivePredict(_input,244,_ctx);
19656 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
19657 				if ( _alt==1 ) {
19658 					{
19659 					{
19660 					setState(2873);
19661 					match(COMMA_);
19662 					setState(2874);
19663 					alterColumnAddOption();
19664 					}
19665 					} 
19666 				}
19667 				setState(2879);
19668 				_errHandler.sync(this);
19669 				_alt = getInterpreter().adaptivePredict(_input,244,_ctx);
19670 			}
19671 			}
19672 		}
19673 		catch (RecognitionException re) {
19674 			_localctx.exception = re;
19675 			_errHandler.reportError(this, re);
19676 			_errHandler.recover(this, re);
19677 		}
19678 		finally {
19679 			exitRule();
19680 		}
19681 		return _localctx;
19682 	}
19683 
19684 	public static class AlterColumnAddOptionContext extends ParserRuleContext {
19685 		public ColumnDefinitionContext columnDefinition() {
19686 			return getRuleContext(ColumnDefinitionContext.class,0);
19687 		}
19688 		public ComputedColumnDefinitionContext computedColumnDefinition() {
19689 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
19690 		}
19691 		public ColumnSetDefinitionContext columnSetDefinition() {
19692 			return getRuleContext(ColumnSetDefinitionContext.class,0);
19693 		}
19694 		public TableConstraintContext tableConstraint() {
19695 			return getRuleContext(TableConstraintContext.class,0);
19696 		}
19697 		public AlterTableTableIndexContext alterTableTableIndex() {
19698 			return getRuleContext(AlterTableTableIndexContext.class,0);
19699 		}
19700 		public ConstraintForColumnContext constraintForColumn() {
19701 			return getRuleContext(ConstraintForColumnContext.class,0);
19702 		}
19703 		public AlterColumnAddOptionContext(ParserRuleContext parent, int invokingState) {
19704 			super(parent, invokingState);
19705 		}
19706 		@Override public int getRuleIndex() { return RULE_alterColumnAddOption; }
19707 		@Override
19708 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19709 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnAddOption(this);
19710 			else return visitor.visitChildren(this);
19711 		}
19712 	}
19713 
19714 	public final AlterColumnAddOptionContext alterColumnAddOption() throws RecognitionException {
19715 		AlterColumnAddOptionContext _localctx = new AlterColumnAddOptionContext(_ctx, getState());
19716 		enterRule(_localctx, 418, RULE_alterColumnAddOption);
19717 		try {
19718 			setState(2886);
19719 			_errHandler.sync(this);
19720 			switch ( getInterpreter().adaptivePredict(_input,245,_ctx) ) {
19721 			case 1:
19722 				enterOuterAlt(_localctx, 1);
19723 				{
19724 				setState(2880);
19725 				columnDefinition();
19726 				}
19727 				break;
19728 			case 2:
19729 				enterOuterAlt(_localctx, 2);
19730 				{
19731 				setState(2881);
19732 				computedColumnDefinition();
19733 				}
19734 				break;
19735 			case 3:
19736 				enterOuterAlt(_localctx, 3);
19737 				{
19738 				setState(2882);
19739 				columnSetDefinition();
19740 				}
19741 				break;
19742 			case 4:
19743 				enterOuterAlt(_localctx, 4);
19744 				{
19745 				setState(2883);
19746 				tableConstraint();
19747 				}
19748 				break;
19749 			case 5:
19750 				enterOuterAlt(_localctx, 5);
19751 				{
19752 				setState(2884);
19753 				alterTableTableIndex();
19754 				}
19755 				break;
19756 			case 6:
19757 				enterOuterAlt(_localctx, 6);
19758 				{
19759 				setState(2885);
19760 				constraintForColumn();
19761 				}
19762 				break;
19763 			}
19764 		}
19765 		catch (RecognitionException re) {
19766 			_localctx.exception = re;
19767 			_errHandler.reportError(this, re);
19768 			_errHandler.recover(this, re);
19769 		}
19770 		finally {
19771 			exitRule();
19772 		}
19773 		return _localctx;
19774 	}
19775 
19776 	public static class ConstraintForColumnContext extends ParserRuleContext {
19777 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
19778 		public SimpleExprContext simpleExpr() {
19779 			return getRuleContext(SimpleExprContext.class,0);
19780 		}
19781 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
19782 		public ColumnNameContext columnName() {
19783 			return getRuleContext(ColumnNameContext.class,0);
19784 		}
19785 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
19786 		public ConstraintNameContext constraintName() {
19787 			return getRuleContext(ConstraintNameContext.class,0);
19788 		}
19789 		public ConstraintForColumnContext(ParserRuleContext parent, int invokingState) {
19790 			super(parent, invokingState);
19791 		}
19792 		@Override public int getRuleIndex() { return RULE_constraintForColumn; }
19793 		@Override
19794 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19795 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConstraintForColumn(this);
19796 			else return visitor.visitChildren(this);
19797 		}
19798 	}
19799 
19800 	public final ConstraintForColumnContext constraintForColumn() throws RecognitionException {
19801 		ConstraintForColumnContext _localctx = new ConstraintForColumnContext(_ctx, getState());
19802 		enterRule(_localctx, 420, RULE_constraintForColumn);
19803 		int _la;
19804 		try {
19805 			enterOuterAlt(_localctx, 1);
19806 			{
19807 			setState(2890);
19808 			_errHandler.sync(this);
19809 			_la = _input.LA(1);
19810 			if (_la==CONSTRAINT) {
19811 				{
19812 				setState(2888);
19813 				match(CONSTRAINT);
19814 				setState(2889);
19815 				constraintName();
19816 				}
19817 			}
19818 
19819 			setState(2892);
19820 			match(DEFAULT);
19821 			setState(2893);
19822 			simpleExpr(0);
19823 			setState(2894);
19824 			match(FOR);
19825 			setState(2895);
19826 			columnName();
19827 			}
19828 		}
19829 		catch (RecognitionException re) {
19830 			_localctx.exception = re;
19831 			_errHandler.reportError(this, re);
19832 			_errHandler.recover(this, re);
19833 		}
19834 		finally {
19835 			exitRule();
19836 		}
19837 		return _localctx;
19838 	}
19839 
19840 	public static class GeneratedColumnNamesClauseContext extends ParserRuleContext {
19841 		public GeneratedColumnNameClauseContext generatedColumnNameClause() {
19842 			return getRuleContext(GeneratedColumnNameClauseContext.class,0);
19843 		}
19844 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
19845 		public PeriodClauseContext periodClause() {
19846 			return getRuleContext(PeriodClauseContext.class,0);
19847 		}
19848 		public GeneratedColumnNamesClauseContext(ParserRuleContext parent, int invokingState) {
19849 			super(parent, invokingState);
19850 		}
19851 		@Override public int getRuleIndex() { return RULE_generatedColumnNamesClause; }
19852 		@Override
19853 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19854 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnNamesClause(this);
19855 			else return visitor.visitChildren(this);
19856 		}
19857 	}
19858 
19859 	public final GeneratedColumnNamesClauseContext generatedColumnNamesClause() throws RecognitionException {
19860 		GeneratedColumnNamesClauseContext _localctx = new GeneratedColumnNamesClauseContext(_ctx, getState());
19861 		enterRule(_localctx, 422, RULE_generatedColumnNamesClause);
19862 		try {
19863 			setState(2905);
19864 			_errHandler.sync(this);
19865 			switch ( getInterpreter().adaptivePredict(_input,247,_ctx) ) {
19866 			case 1:
19867 				enterOuterAlt(_localctx, 1);
19868 				{
19869 				setState(2897);
19870 				generatedColumnNameClause();
19871 				setState(2898);
19872 				match(COMMA_);
19873 				setState(2899);
19874 				periodClause();
19875 				}
19876 				break;
19877 			case 2:
19878 				enterOuterAlt(_localctx, 2);
19879 				{
19880 				setState(2901);
19881 				periodClause();
19882 				setState(2902);
19883 				match(COMMA_);
19884 				setState(2903);
19885 				generatedColumnNameClause();
19886 				}
19887 				break;
19888 			}
19889 		}
19890 		catch (RecognitionException re) {
19891 			_localctx.exception = re;
19892 			_errHandler.reportError(this, re);
19893 			_errHandler.recover(this, re);
19894 		}
19895 		finally {
19896 			exitRule();
19897 		}
19898 		return _localctx;
19899 	}
19900 
19901 	public static class GeneratedColumnNameClauseContext extends ParserRuleContext {
19902 		public List<GeneratedColumnNameContext> generatedColumnName() {
19903 			return getRuleContexts(GeneratedColumnNameContext.class);
19904 		}
19905 		public GeneratedColumnNameContext generatedColumnName(int i) {
19906 			return getRuleContext(GeneratedColumnNameContext.class,i);
19907 		}
19908 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
19909 		public SimpleExprContext simpleExpr() {
19910 			return getRuleContext(SimpleExprContext.class,0);
19911 		}
19912 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
19913 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
19914 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
19915 		public GeneratedColumnNameClauseContext(ParserRuleContext parent, int invokingState) {
19916 			super(parent, invokingState);
19917 		}
19918 		@Override public int getRuleIndex() { return RULE_generatedColumnNameClause; }
19919 		@Override
19920 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19921 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnNameClause(this);
19922 			else return visitor.visitChildren(this);
19923 		}
19924 	}
19925 
19926 	public final GeneratedColumnNameClauseContext generatedColumnNameClause() throws RecognitionException {
19927 		GeneratedColumnNameClauseContext _localctx = new GeneratedColumnNameClauseContext(_ctx, getState());
19928 		enterRule(_localctx, 424, RULE_generatedColumnNameClause);
19929 		int _la;
19930 		try {
19931 			enterOuterAlt(_localctx, 1);
19932 			{
19933 			setState(2907);
19934 			generatedColumnName();
19935 			setState(2908);
19936 			match(DEFAULT);
19937 			setState(2909);
19938 			simpleExpr(0);
19939 			setState(2912);
19940 			_errHandler.sync(this);
19941 			_la = _input.LA(1);
19942 			if (_la==WITH) {
19943 				{
19944 				setState(2910);
19945 				match(WITH);
19946 				setState(2911);
19947 				match(VALUES);
19948 				}
19949 			}
19950 
19951 			setState(2914);
19952 			match(COMMA_);
19953 			setState(2915);
19954 			generatedColumnName();
19955 			}
19956 		}
19957 		catch (RecognitionException re) {
19958 			_localctx.exception = re;
19959 			_errHandler.reportError(this, re);
19960 			_errHandler.recover(this, re);
19961 		}
19962 		finally {
19963 			exitRule();
19964 		}
19965 		return _localctx;
19966 	}
19967 
19968 	public static class GeneratedColumnNameContext extends ParserRuleContext {
19969 		public ColumnNameContext columnName() {
19970 			return getRuleContext(ColumnNameContext.class,0);
19971 		}
19972 		public DataTypeNameContext dataTypeName() {
19973 			return getRuleContext(DataTypeNameContext.class,0);
19974 		}
19975 		public TerminalNode GENERATED() { return getToken(SQLServerStatementParser.GENERATED, 0); }
19976 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
19977 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
19978 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
19979 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
19980 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
19981 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
19982 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
19983 		public IgnoredIdentifierContext ignoredIdentifier() {
19984 			return getRuleContext(IgnoredIdentifierContext.class,0);
19985 		}
19986 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
19987 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
19988 		public GeneratedColumnNameContext(ParserRuleContext parent, int invokingState) {
19989 			super(parent, invokingState);
19990 		}
19991 		@Override public int getRuleIndex() { return RULE_generatedColumnName; }
19992 		@Override
19993 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19994 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnName(this);
19995 			else return visitor.visitChildren(this);
19996 		}
19997 	}
19998 
19999 	public final GeneratedColumnNameContext generatedColumnName() throws RecognitionException {
20000 		GeneratedColumnNameContext _localctx = new GeneratedColumnNameContext(_ctx, getState());
20001 		enterRule(_localctx, 426, RULE_generatedColumnName);
20002 		int _la;
20003 		try {
20004 			enterOuterAlt(_localctx, 1);
20005 			{
20006 			setState(2917);
20007 			columnName();
20008 			setState(2918);
20009 			dataTypeName();
20010 			setState(2919);
20011 			match(GENERATED);
20012 			setState(2920);
20013 			match(ALWAYS);
20014 			setState(2921);
20015 			match(AS);
20016 			setState(2922);
20017 			match(ROW);
20018 			setState(2924);
20019 			_errHandler.sync(this);
20020 			switch ( getInterpreter().adaptivePredict(_input,249,_ctx) ) {
20021 			case 1:
20022 				{
20023 				setState(2923);
20024 				_la = _input.LA(1);
20025 				if ( !(_la==START || _la==END) ) {
20026 				_errHandler.recoverInline(this);
20027 				}
20028 				else {
20029 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20030 					_errHandler.reportMatch(this);
20031 					consume();
20032 				}
20033 				}
20034 				break;
20035 			}
20036 			setState(2927);
20037 			_errHandler.sync(this);
20038 			_la = _input.LA(1);
20039 			if (_la==HIDDEN_) {
20040 				{
20041 				setState(2926);
20042 				match(HIDDEN_);
20043 				}
20044 			}
20045 
20046 			setState(2931);
20047 			_errHandler.sync(this);
20048 			_la = _input.LA(1);
20049 			if (_la==NOT) {
20050 				{
20051 				setState(2929);
20052 				match(NOT);
20053 				setState(2930);
20054 				match(NULL);
20055 				}
20056 			}
20057 
20058 			setState(2935);
20059 			_errHandler.sync(this);
20060 			_la = _input.LA(1);
20061 			if (_la==CONSTRAINT) {
20062 				{
20063 				setState(2933);
20064 				match(CONSTRAINT);
20065 				setState(2934);
20066 				ignoredIdentifier();
20067 				}
20068 			}
20069 
20070 			}
20071 		}
20072 		catch (RecognitionException re) {
20073 			_localctx.exception = re;
20074 			_errHandler.reportError(this, re);
20075 			_errHandler.recover(this, re);
20076 		}
20077 		finally {
20078 			exitRule();
20079 		}
20080 		return _localctx;
20081 	}
20082 
20083 	public static class AlterDropContext extends ParserRuleContext {
20084 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
20085 		public AlterTableDropConstraintContext alterTableDropConstraint() {
20086 			return getRuleContext(AlterTableDropConstraintContext.class,0);
20087 		}
20088 		public DropColumnSpecificationContext dropColumnSpecification() {
20089 			return getRuleContext(DropColumnSpecificationContext.class,0);
20090 		}
20091 		public DropIndexSpecificationContext dropIndexSpecification() {
20092 			return getRuleContext(DropIndexSpecificationContext.class,0);
20093 		}
20094 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
20095 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
20096 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
20097 		public AlterDropContext(ParserRuleContext parent, int invokingState) {
20098 			super(parent, invokingState);
20099 		}
20100 		@Override public int getRuleIndex() { return RULE_alterDrop; }
20101 		@Override
20102 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20103 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDrop(this);
20104 			else return visitor.visitChildren(this);
20105 		}
20106 	}
20107 
20108 	public final AlterDropContext alterDrop() throws RecognitionException {
20109 		AlterDropContext _localctx = new AlterDropContext(_ctx, getState());
20110 		enterRule(_localctx, 428, RULE_alterDrop);
20111 		try {
20112 			enterOuterAlt(_localctx, 1);
20113 			{
20114 			setState(2937);
20115 			match(DROP);
20116 			setState(2944);
20117 			_errHandler.sync(this);
20118 			switch ( getInterpreter().adaptivePredict(_input,253,_ctx) ) {
20119 			case 1:
20120 				{
20121 				setState(2938);
20122 				alterTableDropConstraint();
20123 				}
20124 				break;
20125 			case 2:
20126 				{
20127 				setState(2939);
20128 				dropColumnSpecification();
20129 				}
20130 				break;
20131 			case 3:
20132 				{
20133 				setState(2940);
20134 				dropIndexSpecification();
20135 				}
20136 				break;
20137 			case 4:
20138 				{
20139 				setState(2941);
20140 				match(PERIOD);
20141 				setState(2942);
20142 				match(FOR);
20143 				setState(2943);
20144 				match(SYSTEM_TIME);
20145 				}
20146 				break;
20147 			}
20148 			}
20149 		}
20150 		catch (RecognitionException re) {
20151 			_localctx.exception = re;
20152 			_errHandler.reportError(this, re);
20153 			_errHandler.recover(this, re);
20154 		}
20155 		finally {
20156 			exitRule();
20157 		}
20158 		return _localctx;
20159 	}
20160 
20161 	public static class AlterTableDropConstraintContext extends ParserRuleContext {
20162 		public List<DropConstraintNameContext> dropConstraintName() {
20163 			return getRuleContexts(DropConstraintNameContext.class);
20164 		}
20165 		public DropConstraintNameContext dropConstraintName(int i) {
20166 			return getRuleContext(DropConstraintNameContext.class,i);
20167 		}
20168 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
20169 		public IfExistsContext ifExists() {
20170 			return getRuleContext(IfExistsContext.class,0);
20171 		}
20172 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20173 		public TerminalNode COMMA_(int i) {
20174 			return getToken(SQLServerStatementParser.COMMA_, i);
20175 		}
20176 		public AlterTableDropConstraintContext(ParserRuleContext parent, int invokingState) {
20177 			super(parent, invokingState);
20178 		}
20179 		@Override public int getRuleIndex() { return RULE_alterTableDropConstraint; }
20180 		@Override
20181 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20182 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableDropConstraint(this);
20183 			else return visitor.visitChildren(this);
20184 		}
20185 	}
20186 
20187 	public final AlterTableDropConstraintContext alterTableDropConstraint() throws RecognitionException {
20188 		AlterTableDropConstraintContext _localctx = new AlterTableDropConstraintContext(_ctx, getState());
20189 		enterRule(_localctx, 430, RULE_alterTableDropConstraint);
20190 		int _la;
20191 		try {
20192 			int _alt;
20193 			enterOuterAlt(_localctx, 1);
20194 			{
20195 			setState(2947);
20196 			_errHandler.sync(this);
20197 			_la = _input.LA(1);
20198 			if (_la==CONSTRAINT) {
20199 				{
20200 				setState(2946);
20201 				match(CONSTRAINT);
20202 				}
20203 			}
20204 
20205 			setState(2950);
20206 			_errHandler.sync(this);
20207 			_la = _input.LA(1);
20208 			if (_la==IF) {
20209 				{
20210 				setState(2949);
20211 				ifExists();
20212 				}
20213 			}
20214 
20215 			setState(2952);
20216 			dropConstraintName();
20217 			setState(2957);
20218 			_errHandler.sync(this);
20219 			_alt = getInterpreter().adaptivePredict(_input,256,_ctx);
20220 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
20221 				if ( _alt==1 ) {
20222 					{
20223 					{
20224 					setState(2953);
20225 					match(COMMA_);
20226 					setState(2954);
20227 					dropConstraintName();
20228 					}
20229 					} 
20230 				}
20231 				setState(2959);
20232 				_errHandler.sync(this);
20233 				_alt = getInterpreter().adaptivePredict(_input,256,_ctx);
20234 			}
20235 			}
20236 		}
20237 		catch (RecognitionException re) {
20238 			_localctx.exception = re;
20239 			_errHandler.reportError(this, re);
20240 			_errHandler.recover(this, re);
20241 		}
20242 		finally {
20243 			exitRule();
20244 		}
20245 		return _localctx;
20246 	}
20247 
20248 	public static class DropConstraintNameContext extends ParserRuleContext {
20249 		public ConstraintNameContext constraintName() {
20250 			return getRuleContext(ConstraintNameContext.class,0);
20251 		}
20252 		public DropConstraintWithClauseContext dropConstraintWithClause() {
20253 			return getRuleContext(DropConstraintWithClauseContext.class,0);
20254 		}
20255 		public DropConstraintNameContext(ParserRuleContext parent, int invokingState) {
20256 			super(parent, invokingState);
20257 		}
20258 		@Override public int getRuleIndex() { return RULE_dropConstraintName; }
20259 		@Override
20260 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20261 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintName(this);
20262 			else return visitor.visitChildren(this);
20263 		}
20264 	}
20265 
20266 	public final DropConstraintNameContext dropConstraintName() throws RecognitionException {
20267 		DropConstraintNameContext _localctx = new DropConstraintNameContext(_ctx, getState());
20268 		enterRule(_localctx, 432, RULE_dropConstraintName);
20269 		try {
20270 			enterOuterAlt(_localctx, 1);
20271 			{
20272 			setState(2960);
20273 			constraintName();
20274 			setState(2962);
20275 			_errHandler.sync(this);
20276 			switch ( getInterpreter().adaptivePredict(_input,257,_ctx) ) {
20277 			case 1:
20278 				{
20279 				setState(2961);
20280 				dropConstraintWithClause();
20281 				}
20282 				break;
20283 			}
20284 			}
20285 		}
20286 		catch (RecognitionException re) {
20287 			_localctx.exception = re;
20288 			_errHandler.reportError(this, re);
20289 			_errHandler.recover(this, re);
20290 		}
20291 		finally {
20292 			exitRule();
20293 		}
20294 		return _localctx;
20295 	}
20296 
20297 	public static class DropConstraintWithClauseContext extends ParserRuleContext {
20298 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
20299 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20300 		public List<DropConstraintOptionContext> dropConstraintOption() {
20301 			return getRuleContexts(DropConstraintOptionContext.class);
20302 		}
20303 		public DropConstraintOptionContext dropConstraintOption(int i) {
20304 			return getRuleContext(DropConstraintOptionContext.class,i);
20305 		}
20306 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20307 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20308 		public TerminalNode COMMA_(int i) {
20309 			return getToken(SQLServerStatementParser.COMMA_, i);
20310 		}
20311 		public DropConstraintWithClauseContext(ParserRuleContext parent, int invokingState) {
20312 			super(parent, invokingState);
20313 		}
20314 		@Override public int getRuleIndex() { return RULE_dropConstraintWithClause; }
20315 		@Override
20316 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20317 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintWithClause(this);
20318 			else return visitor.visitChildren(this);
20319 		}
20320 	}
20321 
20322 	public final DropConstraintWithClauseContext dropConstraintWithClause() throws RecognitionException {
20323 		DropConstraintWithClauseContext _localctx = new DropConstraintWithClauseContext(_ctx, getState());
20324 		enterRule(_localctx, 434, RULE_dropConstraintWithClause);
20325 		int _la;
20326 		try {
20327 			enterOuterAlt(_localctx, 1);
20328 			{
20329 			setState(2964);
20330 			match(WITH);
20331 			setState(2965);
20332 			match(LP_);
20333 			setState(2966);
20334 			dropConstraintOption();
20335 			setState(2971);
20336 			_errHandler.sync(this);
20337 			_la = _input.LA(1);
20338 			while (_la==COMMA_) {
20339 				{
20340 				{
20341 				setState(2967);
20342 				match(COMMA_);
20343 				setState(2968);
20344 				dropConstraintOption();
20345 				}
20346 				}
20347 				setState(2973);
20348 				_errHandler.sync(this);
20349 				_la = _input.LA(1);
20350 			}
20351 			setState(2974);
20352 			match(RP_);
20353 			}
20354 		}
20355 		catch (RecognitionException re) {
20356 			_localctx.exception = re;
20357 			_errHandler.reportError(this, re);
20358 			_errHandler.recover(this, re);
20359 		}
20360 		finally {
20361 			exitRule();
20362 		}
20363 		return _localctx;
20364 	}
20365 
20366 	public static class DropConstraintOptionContext extends ParserRuleContext {
20367 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
20368 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
20369 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
20370 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
20371 		public OnOffOptionContext onOffOption() {
20372 			return getRuleContext(OnOffOptionContext.class,0);
20373 		}
20374 		public TerminalNode MOVE() { return getToken(SQLServerStatementParser.MOVE, 0); }
20375 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
20376 		public SchemaNameContext schemaName() {
20377 			return getRuleContext(SchemaNameContext.class,0);
20378 		}
20379 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20380 		public ColumnNameContext columnName() {
20381 			return getRuleContext(ColumnNameContext.class,0);
20382 		}
20383 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20384 		public IgnoredIdentifierContext ignoredIdentifier() {
20385 			return getRuleContext(IgnoredIdentifierContext.class,0);
20386 		}
20387 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
20388 		public DropConstraintOptionContext(ParserRuleContext parent, int invokingState) {
20389 			super(parent, invokingState);
20390 		}
20391 		@Override public int getRuleIndex() { return RULE_dropConstraintOption; }
20392 		@Override
20393 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20394 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintOption(this);
20395 			else return visitor.visitChildren(this);
20396 		}
20397 	}
20398 
20399 	public final DropConstraintOptionContext dropConstraintOption() throws RecognitionException {
20400 		DropConstraintOptionContext _localctx = new DropConstraintOptionContext(_ctx, getState());
20401 		enterRule(_localctx, 436, RULE_dropConstraintOption);
20402 		try {
20403 			enterOuterAlt(_localctx, 1);
20404 			{
20405 			setState(2993);
20406 			_errHandler.sync(this);
20407 			switch (_input.LA(1)) {
20408 			case MAXDOP:
20409 				{
20410 				setState(2976);
20411 				match(MAXDOP);
20412 				setState(2977);
20413 				match(EQ_);
20414 				setState(2978);
20415 				match(NUMBER_);
20416 				}
20417 				break;
20418 			case ONLINE:
20419 				{
20420 				setState(2979);
20421 				match(ONLINE);
20422 				setState(2980);
20423 				match(EQ_);
20424 				setState(2981);
20425 				onOffOption();
20426 				}
20427 				break;
20428 			case MOVE:
20429 				{
20430 				setState(2982);
20431 				match(MOVE);
20432 				setState(2983);
20433 				match(TO);
20434 				setState(2991);
20435 				_errHandler.sync(this);
20436 				switch ( getInterpreter().adaptivePredict(_input,259,_ctx) ) {
20437 				case 1:
20438 					{
20439 					setState(2984);
20440 					schemaName();
20441 					setState(2985);
20442 					match(LP_);
20443 					setState(2986);
20444 					columnName();
20445 					setState(2987);
20446 					match(RP_);
20447 					}
20448 					break;
20449 				case 2:
20450 					{
20451 					setState(2989);
20452 					ignoredIdentifier();
20453 					}
20454 					break;
20455 				case 3:
20456 					{
20457 					setState(2990);
20458 					match(STRING_);
20459 					}
20460 					break;
20461 				}
20462 				}
20463 				break;
20464 			default:
20465 				throw new NoViableAltException(this);
20466 			}
20467 			}
20468 		}
20469 		catch (RecognitionException re) {
20470 			_localctx.exception = re;
20471 			_errHandler.reportError(this, re);
20472 			_errHandler.recover(this, re);
20473 		}
20474 		finally {
20475 			exitRule();
20476 		}
20477 		return _localctx;
20478 	}
20479 
20480 	public static class OnOffOptionContext extends ParserRuleContext {
20481 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
20482 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
20483 		public OnOffOptionContext(ParserRuleContext parent, int invokingState) {
20484 			super(parent, invokingState);
20485 		}
20486 		@Override public int getRuleIndex() { return RULE_onOffOption; }
20487 		@Override
20488 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20489 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnOffOption(this);
20490 			else return visitor.visitChildren(this);
20491 		}
20492 	}
20493 
20494 	public final OnOffOptionContext onOffOption() throws RecognitionException {
20495 		OnOffOptionContext _localctx = new OnOffOptionContext(_ctx, getState());
20496 		enterRule(_localctx, 438, RULE_onOffOption);
20497 		int _la;
20498 		try {
20499 			enterOuterAlt(_localctx, 1);
20500 			{
20501 			setState(2995);
20502 			_la = _input.LA(1);
20503 			if ( !(_la==ON || _la==OFF) ) {
20504 			_errHandler.recoverInline(this);
20505 			}
20506 			else {
20507 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20508 				_errHandler.reportMatch(this);
20509 				consume();
20510 			}
20511 			}
20512 		}
20513 		catch (RecognitionException re) {
20514 			_localctx.exception = re;
20515 			_errHandler.reportError(this, re);
20516 			_errHandler.recover(this, re);
20517 		}
20518 		finally {
20519 			exitRule();
20520 		}
20521 		return _localctx;
20522 	}
20523 
20524 	public static class DropColumnSpecificationContext extends ParserRuleContext {
20525 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
20526 		public List<ColumnNameContext> columnName() {
20527 			return getRuleContexts(ColumnNameContext.class);
20528 		}
20529 		public ColumnNameContext columnName(int i) {
20530 			return getRuleContext(ColumnNameContext.class,i);
20531 		}
20532 		public IfExistsContext ifExists() {
20533 			return getRuleContext(IfExistsContext.class,0);
20534 		}
20535 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20536 		public TerminalNode COMMA_(int i) {
20537 			return getToken(SQLServerStatementParser.COMMA_, i);
20538 		}
20539 		public DropColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
20540 			super(parent, invokingState);
20541 		}
20542 		@Override public int getRuleIndex() { return RULE_dropColumnSpecification; }
20543 		@Override
20544 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20545 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropColumnSpecification(this);
20546 			else return visitor.visitChildren(this);
20547 		}
20548 	}
20549 
20550 	public final DropColumnSpecificationContext dropColumnSpecification() throws RecognitionException {
20551 		DropColumnSpecificationContext _localctx = new DropColumnSpecificationContext(_ctx, getState());
20552 		enterRule(_localctx, 440, RULE_dropColumnSpecification);
20553 		int _la;
20554 		try {
20555 			int _alt;
20556 			enterOuterAlt(_localctx, 1);
20557 			{
20558 			setState(2997);
20559 			match(COLUMN);
20560 			setState(2999);
20561 			_errHandler.sync(this);
20562 			_la = _input.LA(1);
20563 			if (_la==IF) {
20564 				{
20565 				setState(2998);
20566 				ifExists();
20567 				}
20568 			}
20569 
20570 			setState(3001);
20571 			columnName();
20572 			setState(3006);
20573 			_errHandler.sync(this);
20574 			_alt = getInterpreter().adaptivePredict(_input,262,_ctx);
20575 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
20576 				if ( _alt==1 ) {
20577 					{
20578 					{
20579 					setState(3002);
20580 					match(COMMA_);
20581 					setState(3003);
20582 					columnName();
20583 					}
20584 					} 
20585 				}
20586 				setState(3008);
20587 				_errHandler.sync(this);
20588 				_alt = getInterpreter().adaptivePredict(_input,262,_ctx);
20589 			}
20590 			}
20591 		}
20592 		catch (RecognitionException re) {
20593 			_localctx.exception = re;
20594 			_errHandler.reportError(this, re);
20595 			_errHandler.recover(this, re);
20596 		}
20597 		finally {
20598 			exitRule();
20599 		}
20600 		return _localctx;
20601 	}
20602 
20603 	public static class DropIndexSpecificationContext extends ParserRuleContext {
20604 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
20605 		public List<IndexNameContext> indexName() {
20606 			return getRuleContexts(IndexNameContext.class);
20607 		}
20608 		public IndexNameContext indexName(int i) {
20609 			return getRuleContext(IndexNameContext.class,i);
20610 		}
20611 		public IfExistsContext ifExists() {
20612 			return getRuleContext(IfExistsContext.class,0);
20613 		}
20614 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20615 		public TerminalNode COMMA_(int i) {
20616 			return getToken(SQLServerStatementParser.COMMA_, i);
20617 		}
20618 		public DropIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
20619 			super(parent, invokingState);
20620 		}
20621 		@Override public int getRuleIndex() { return RULE_dropIndexSpecification; }
20622 		@Override
20623 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20624 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropIndexSpecification(this);
20625 			else return visitor.visitChildren(this);
20626 		}
20627 	}
20628 
20629 	public final DropIndexSpecificationContext dropIndexSpecification() throws RecognitionException {
20630 		DropIndexSpecificationContext _localctx = new DropIndexSpecificationContext(_ctx, getState());
20631 		enterRule(_localctx, 442, RULE_dropIndexSpecification);
20632 		int _la;
20633 		try {
20634 			int _alt;
20635 			enterOuterAlt(_localctx, 1);
20636 			{
20637 			setState(3009);
20638 			match(INDEX);
20639 			setState(3011);
20640 			_errHandler.sync(this);
20641 			_la = _input.LA(1);
20642 			if (_la==IF) {
20643 				{
20644 				setState(3010);
20645 				ifExists();
20646 				}
20647 			}
20648 
20649 			setState(3013);
20650 			indexName();
20651 			setState(3018);
20652 			_errHandler.sync(this);
20653 			_alt = getInterpreter().adaptivePredict(_input,264,_ctx);
20654 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
20655 				if ( _alt==1 ) {
20656 					{
20657 					{
20658 					setState(3014);
20659 					match(COMMA_);
20660 					setState(3015);
20661 					indexName();
20662 					}
20663 					} 
20664 				}
20665 				setState(3020);
20666 				_errHandler.sync(this);
20667 				_alt = getInterpreter().adaptivePredict(_input,264,_ctx);
20668 			}
20669 			}
20670 		}
20671 		catch (RecognitionException re) {
20672 			_localctx.exception = re;
20673 			_errHandler.reportError(this, re);
20674 			_errHandler.recover(this, re);
20675 		}
20676 		finally {
20677 			exitRule();
20678 		}
20679 		return _localctx;
20680 	}
20681 
20682 	public static class AlterCheckConstraintContext extends ParserRuleContext {
20683 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
20684 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
20685 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
20686 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
20687 		public ConstraintNameContext constraintName() {
20688 			return getRuleContext(ConstraintNameContext.class,0);
20689 		}
20690 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
20691 		public AlterCheckConstraintContext(ParserRuleContext parent, int invokingState) {
20692 			super(parent, invokingState);
20693 		}
20694 		@Override public int getRuleIndex() { return RULE_alterCheckConstraint; }
20695 		@Override
20696 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20697 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterCheckConstraint(this);
20698 			else return visitor.visitChildren(this);
20699 		}
20700 	}
20701 
20702 	public final AlterCheckConstraintContext alterCheckConstraint() throws RecognitionException {
20703 		AlterCheckConstraintContext _localctx = new AlterCheckConstraintContext(_ctx, getState());
20704 		enterRule(_localctx, 444, RULE_alterCheckConstraint);
20705 		int _la;
20706 		try {
20707 			enterOuterAlt(_localctx, 1);
20708 			{
20709 			setState(3022);
20710 			_errHandler.sync(this);
20711 			_la = _input.LA(1);
20712 			if (_la==WITH) {
20713 				{
20714 				setState(3021);
20715 				match(WITH);
20716 				}
20717 			}
20718 
20719 			setState(3024);
20720 			_la = _input.LA(1);
20721 			if ( !(_la==CHECK || _la==NOCHECK) ) {
20722 			_errHandler.recoverInline(this);
20723 			}
20724 			else {
20725 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20726 				_errHandler.reportMatch(this);
20727 				consume();
20728 			}
20729 			setState(3025);
20730 			match(CONSTRAINT);
20731 			setState(3028);
20732 			_errHandler.sync(this);
20733 			switch (_input.LA(1)) {
20734 			case ALL:
20735 				{
20736 				setState(3026);
20737 				match(ALL);
20738 				}
20739 				break;
20740 			case TRUNCATE:
20741 			case SCHEMA:
20742 			case FUNCTION:
20743 			case TRIGGER:
20744 			case CAST:
20745 			case GROUP:
20746 			case LIMIT:
20747 			case OFFSET:
20748 			case SAVEPOINT:
20749 			case BOOLEAN:
20750 			case ARRAY:
20751 			case DATE:
20752 			case LOCALTIME:
20753 			case LOCALTIMESTAMP:
20754 			case QUARTER:
20755 			case WEEK:
20756 			case DAY:
20757 			case MICROSECOND:
20758 			case MAX:
20759 			case MIN:
20760 			case SUM:
20761 			case COUNT:
20762 			case AVG:
20763 			case ENABLE:
20764 			case DISABLE:
20765 			case INSTANCE:
20766 			case DO:
20767 			case DEFINER:
20768 			case SQL:
20769 			case CASCADED:
20770 			case LOCAL:
20771 			case NEXT:
20772 			case NAME:
20773 			case INTEGER:
20774 			case TYPE:
20775 			case READ_ONLY:
20776 			case DATABASE:
20777 			case DATEPART:
20778 			case PASSWORD:
20779 			case BINARY:
20780 			case HIDDEN_:
20781 			case MOD:
20782 			case PARTITION:
20783 			case PARTITIONS:
20784 			case TOP:
20785 			case ROW:
20786 			case ROWS:
20787 			case XOR:
20788 			case ALWAYS:
20789 			case ROLE:
20790 			case START:
20791 			case ALGORITHM:
20792 			case AUTO:
20793 			case BLOCKERS:
20794 			case CLUSTERED:
20795 			case NONCLUSTERED:
20796 			case COLUMNSTORE:
20797 			case CONTENT:
20798 			case YEARS:
20799 			case MONTHS:
20800 			case WEEKS:
20801 			case DAYS:
20802 			case MINUTES:
20803 			case DENY:
20804 			case DETERMINISTIC:
20805 			case DISTRIBUTION:
20806 			case DOCUMENT:
20807 			case DURABILITY:
20808 			case ENCRYPTED:
20809 			case FILESTREAM:
20810 			case FILETABLE:
20811 			case FILLFACTOR:
20812 			case FOLLOWING:
20813 			case HASH:
20814 			case HEAP:
20815 			case INBOUND:
20816 			case OUTBOUND:
20817 			case UNBOUNDED:
20818 			case INFINITE:
20819 			case LOGIN:
20820 			case MASKED:
20821 			case MAXDOP:
20822 			case MOVE:
20823 			case NOCHECK:
20824 			case OBJECT:
20825 			case OFF:
20826 			case ONLINE:
20827 			case OVER:
20828 			case PAGE:
20829 			case PAUSED:
20830 			case PERIOD:
20831 			case PERSISTED:
20832 			case PRECEDING:
20833 			case RANDOMIZED:
20834 			case RANGE:
20835 			case REBUILD:
20836 			case REPLICATE:
20837 			case REPLICATION:
20838 			case RESUMABLE:
20839 			case ROWGUIDCOL:
20840 			case SAVE:
20841 			case SELF:
20842 			case SPARSE:
20843 			case SWITCH:
20844 			case TRAN:
20845 			case TRANCOUNT:
20846 			case CONTROL:
20847 			case CONCAT:
20848 			case TAKE:
20849 			case OWNERSHIP:
20850 			case DEFINITION:
20851 			case APPLICATION:
20852 			case ASSEMBLY:
20853 			case SYMMETRIC:
20854 			case ASYMMETRIC:
20855 			case SERVER:
20856 			case RECEIVE:
20857 			case CHANGE:
20858 			case TRACE:
20859 			case TRACKING:
20860 			case RESOURCES:
20861 			case SETTINGS:
20862 			case STATE:
20863 			case AVAILABILITY:
20864 			case CREDENTIAL:
20865 			case ENDPOINT:
20866 			case EVENT:
20867 			case NOTIFICATION:
20868 			case LINKED:
20869 			case AUDIT:
20870 			case DDL:
20871 			case XML:
20872 			case IMPERSONATE:
20873 			case SECURABLES:
20874 			case AUTHENTICATE:
20875 			case EXTERNAL:
20876 			case ACCESS:
20877 			case ADMINISTER:
20878 			case BULK:
20879 			case OPERATIONS:
20880 			case UNSAFE:
20881 			case SHUTDOWN:
20882 			case SCOPED:
20883 			case CONFIGURATION:
20884 			case DATASPACE:
20885 			case SERVICE:
20886 			case CERTIFICATE:
20887 			case CONTRACT:
20888 			case ENCRYPTION:
20889 			case MASTER:
20890 			case DATA:
20891 			case SOURCE:
20892 			case FILE:
20893 			case FORMAT:
20894 			case LIBRARY:
20895 			case FULLTEXT:
20896 			case MASK:
20897 			case UNMASK:
20898 			case MESSAGE:
20899 			case REMOTE:
20900 			case BINDING:
20901 			case ROUTE:
20902 			case SECURITY:
20903 			case POLICY:
20904 			case AGGREGATE:
20905 			case QUEUE:
20906 			case RULE:
20907 			case SYNONYM:
20908 			case COLLECTION:
20909 			case SCRIPT:
20910 			case KILL:
20911 			case BACKUP:
20912 			case LOG:
20913 			case SHOWPLAN:
20914 			case SUBSCRIBE:
20915 			case QUERY:
20916 			case NOTIFICATIONS:
20917 			case CHECKPOINT:
20918 			case SEQUENCE:
20919 			case ABORT_AFTER_WAIT:
20920 			case ALLOW_PAGE_LOCKS:
20921 			case ALLOW_ROW_LOCKS:
20922 			case ALL_SPARSE_COLUMNS:
20923 			case BUCKET_COUNT:
20924 			case COLUMNSTORE_ARCHIVE:
20925 			case COLUMN_ENCRYPTION_KEY:
20926 			case COLUMN_SET:
20927 			case COMPRESSION_DELAY:
20928 			case DATABASE_DEAULT:
20929 			case DATA_COMPRESSION:
20930 			case DATA_CONSISTENCY_CHECK:
20931 			case ENCRYPTION_TYPE:
20932 			case SYSTEM_TIME:
20933 			case SYSTEM_VERSIONING:
20934 			case TEXTIMAGE_ON:
20935 			case WAIT_AT_LOW_PRIORITY:
20936 			case STATISTICS_INCREMENTAL:
20937 			case STATISTICS_NORECOMPUTE:
20938 			case ROUND_ROBIN:
20939 			case SCHEMA_AND_DATA:
20940 			case SCHEMA_ONLY:
20941 			case SORT_IN_TEMPDB:
20942 			case IGNORE_DUP_KEY:
20943 			case IMPLICIT_TRANSACTIONS:
20944 			case MAX_DURATION:
20945 			case MEMORY_OPTIMIZED:
20946 			case MIGRATION_STATE:
20947 			case PAD_INDEX:
20948 			case REMOTE_DATA_ARCHIVE:
20949 			case FILESTREAM_ON:
20950 			case FILETABLE_COLLATE_FILENAME:
20951 			case FILETABLE_DIRECTORY:
20952 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
20953 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
20954 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
20955 			case FILTER_PREDICATE:
20956 			case HISTORY_RETENTION_PERIOD:
20957 			case HISTORY_TABLE:
20958 			case LOCK_ESCALATION:
20959 			case DROP_EXISTING:
20960 			case ROW_NUMBER:
20961 			case FIRST:
20962 			case DATETIME2:
20963 			case OUTPUT:
20964 			case INSERTED:
20965 			case DELETED:
20966 			case FILENAME:
20967 			case MAXSIZE:
20968 			case FILEGROWTH:
20969 			case UNLIMITED:
20970 			case KB:
20971 			case MB:
20972 			case GB:
20973 			case TB:
20974 			case MEMORY_OPTIMIZED_DATA:
20975 			case FILEGROUP:
20976 			case NON_TRANSACTED_ACCESS:
20977 			case DB_CHAINING:
20978 			case TRUSTWORTHY:
20979 			case FORWARD_ONLY:
20980 			case KEYSET:
20981 			case FAST_FORWARD:
20982 			case SCROLL_LOCKS:
20983 			case OPTIMISTIC:
20984 			case TYPE_WARNING:
20985 			case SCHEMABINDING:
20986 			case CALLER:
20987 			case OWNER:
20988 			case SNAPSHOT:
20989 			case REPEATABLE:
20990 			case SERIALIZABLE:
20991 			case NATIVE_COMPILATION:
20992 			case VIEW_METADATA:
20993 			case INSTEAD:
20994 			case APPEND:
20995 			case INCREMENT:
20996 			case CACHE:
20997 			case MINVALUE:
20998 			case MAXVALUE:
20999 			case RESTART:
21000 			case LOB_COMPACTION:
21001 			case COMPRESS_ALL_ROW_GROUPS:
21002 			case REORGANIZE:
21003 			case RESUME:
21004 			case PAUSE:
21005 			case ABORT:
21006 			case ACCELERATED_DATABASE_RECOVERY:
21007 			case PERSISTENT_VERSION_STORE_FILEGROUP:
21008 			case IMMEDIATE:
21009 			case NO_WAIT:
21010 			case TARGET_RECOVERY_TIME:
21011 			case SECONDS:
21012 			case HONOR_BROKER_PRIORITY:
21013 			case ERROR_BROKER_CONVERSATIONS:
21014 			case NEW_BROKER:
21015 			case DISABLE_BROKER:
21016 			case ENABLE_BROKER:
21017 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
21018 			case READ_COMMITTED_SNAPSHOT:
21019 			case ALLOW_SNAPSHOT_ISOLATION:
21020 			case RECURSIVE_TRIGGERS:
21021 			case QUOTED_IDENTIFIER:
21022 			case NUMERIC_ROUNDABORT:
21023 			case CONCAT_NULL_YIELDS_NULL:
21024 			case COMPATIBILITY_LEVEL:
21025 			case ARITHABORT:
21026 			case ANSI_WARNINGS:
21027 			case ANSI_PADDING:
21028 			case ANSI_NULLS:
21029 			case ANSI_NULL_DEFAULT:
21030 			case PAGE_VERIFY:
21031 			case CHECKSUM:
21032 			case TORN_PAGE_DETECTION:
21033 			case BULK_LOGGED:
21034 			case RECOVERY:
21035 			case TOTAL_EXECUTION_CPU_TIME_MS:
21036 			case TOTAL_COMPILE_CPU_TIME_MS:
21037 			case STALE_CAPTURE_POLICY_THRESHOLD:
21038 			case EXECUTION_COUNT:
21039 			case QUERY_CAPTURE_POLICY:
21040 			case WAIT_STATS_CAPTURE_MODE:
21041 			case MAX_PLANS_PER_QUERY:
21042 			case QUERY_CAPTURE_MODE:
21043 			case SIZE_BASED_CLEANUP_MODE:
21044 			case INTERVAL_LENGTH_MINUTES:
21045 			case MAX_STORAGE_SIZE_MB:
21046 			case DATA_FLUSH_INTERVAL_SECONDS:
21047 			case CLEANUP_POLICY:
21048 			case CUSTOM:
21049 			case STALE_QUERY_THRESHOLD_DAYS:
21050 			case OPERATION_MODE:
21051 			case QUERY_STORE:
21052 			case CURSOR_DEFAULT:
21053 			case GLOBAL:
21054 			case CURSOR_CLOSE_ON_COMMIT:
21055 			case HOURS:
21056 			case CHANGE_RETENTION:
21057 			case AUTO_CLEANUP:
21058 			case CHANGE_TRACKING:
21059 			case AUTOMATIC_TUNING:
21060 			case FORCE_LAST_GOOD_PLAN:
21061 			case AUTO_UPDATE_STATISTICS_ASYNC:
21062 			case AUTO_UPDATE_STATISTICS:
21063 			case AUTO_SHRINK:
21064 			case AUTO_CREATE_STATISTICS:
21065 			case INCREMENTAL:
21066 			case AUTO_CLOSE:
21067 			case DATA_RETENTION:
21068 			case TEMPORAL_HISTORY_RETENTION:
21069 			case EDITION:
21070 			case MIXED_PAGE_ALLOCATION:
21071 			case DISABLED:
21072 			case ALLOWED:
21073 			case HADR:
21074 			case MULTI_USER:
21075 			case RESTRICTED_USER:
21076 			case SINGLE_USER:
21077 			case OFFLINE:
21078 			case EMERGENCY:
21079 			case SUSPEND:
21080 			case DATE_CORRELATION_OPTIMIZATION:
21081 			case ELASTIC_POOL:
21082 			case SERVICE_OBJECTIVE:
21083 			case DATABASE_NAME:
21084 			case ALLOW_CONNECTIONS:
21085 			case GEO:
21086 			case NAMED:
21087 			case DATEFIRST:
21088 			case BACKUP_STORAGE_REDUNDANCY:
21089 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
21090 			case SECONDARY:
21091 			case FAILOVER:
21092 			case DEFAULT_FULLTEXT_LANGUAGE:
21093 			case DEFAULT_LANGUAGE:
21094 			case INLINE:
21095 			case NESTED_TRIGGERS:
21096 			case TRANSFORM_NOISE_WORDS:
21097 			case TWO_DIGIT_YEAR_CUTOFF:
21098 			case PERSISTENT_LOG_BUFFER:
21099 			case DIRECTORY_NAME:
21100 			case DATEFORMAT:
21101 			case DELAYED_DURABILITY:
21102 			case AUTHORIZATION:
21103 			case TRANSFER:
21104 			case SEARCH:
21105 			case MEMBER:
21106 			case IDENTIFIER_:
21107 			case DELIMITED_IDENTIFIER_:
21108 				{
21109 				setState(3027);
21110 				constraintName();
21111 				}
21112 				break;
21113 			default:
21114 				throw new NoViableAltException(this);
21115 			}
21116 			}
21117 		}
21118 		catch (RecognitionException re) {
21119 			_localctx.exception = re;
21120 			_errHandler.reportError(this, re);
21121 			_errHandler.recover(this, re);
21122 		}
21123 		finally {
21124 			exitRule();
21125 		}
21126 		return _localctx;
21127 	}
21128 
21129 	public static class AlterTableTriggerContext extends ParserRuleContext {
21130 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
21131 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
21132 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
21133 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
21134 		public IgnoredIdentifiersContext ignoredIdentifiers() {
21135 			return getRuleContext(IgnoredIdentifiersContext.class,0);
21136 		}
21137 		public AlterTableTriggerContext(ParserRuleContext parent, int invokingState) {
21138 			super(parent, invokingState);
21139 		}
21140 		@Override public int getRuleIndex() { return RULE_alterTableTrigger; }
21141 		@Override
21142 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21143 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableTrigger(this);
21144 			else return visitor.visitChildren(this);
21145 		}
21146 	}
21147 
21148 	public final AlterTableTriggerContext alterTableTrigger() throws RecognitionException {
21149 		AlterTableTriggerContext _localctx = new AlterTableTriggerContext(_ctx, getState());
21150 		enterRule(_localctx, 446, RULE_alterTableTrigger);
21151 		int _la;
21152 		try {
21153 			enterOuterAlt(_localctx, 1);
21154 			{
21155 			setState(3030);
21156 			_la = _input.LA(1);
21157 			if ( !(_la==ENABLE || _la==DISABLE) ) {
21158 			_errHandler.recoverInline(this);
21159 			}
21160 			else {
21161 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21162 				_errHandler.reportMatch(this);
21163 				consume();
21164 			}
21165 			setState(3031);
21166 			match(TRIGGER);
21167 			setState(3034);
21168 			_errHandler.sync(this);
21169 			switch (_input.LA(1)) {
21170 			case ALL:
21171 				{
21172 				setState(3032);
21173 				match(ALL);
21174 				}
21175 				break;
21176 			case IDENTIFIER_:
21177 				{
21178 				setState(3033);
21179 				ignoredIdentifiers();
21180 				}
21181 				break;
21182 			default:
21183 				throw new NoViableAltException(this);
21184 			}
21185 			}
21186 		}
21187 		catch (RecognitionException re) {
21188 			_localctx.exception = re;
21189 			_errHandler.reportError(this, re);
21190 			_errHandler.recover(this, re);
21191 		}
21192 		finally {
21193 			exitRule();
21194 		}
21195 		return _localctx;
21196 	}
21197 
21198 	public static class AlterSwitchContext extends ParserRuleContext {
21199 		public TerminalNode SWITCH() { return getToken(SQLServerStatementParser.SWITCH, 0); }
21200 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
21201 		public TableNameContext tableName() {
21202 			return getRuleContext(TableNameContext.class,0);
21203 		}
21204 		public List<TerminalNode> PARTITION() { return getTokens(SQLServerStatementParser.PARTITION); }
21205 		public TerminalNode PARTITION(int i) {
21206 			return getToken(SQLServerStatementParser.PARTITION, i);
21207 		}
21208 		public List<ExprContext> expr() {
21209 			return getRuleContexts(ExprContext.class);
21210 		}
21211 		public ExprContext expr(int i) {
21212 			return getRuleContext(ExprContext.class,i);
21213 		}
21214 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
21215 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
21216 		public LowPriorityLockWaitContext lowPriorityLockWait() {
21217 			return getRuleContext(LowPriorityLockWaitContext.class,0);
21218 		}
21219 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
21220 		public AlterSwitchContext(ParserRuleContext parent, int invokingState) {
21221 			super(parent, invokingState);
21222 		}
21223 		@Override public int getRuleIndex() { return RULE_alterSwitch; }
21224 		@Override
21225 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21226 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSwitch(this);
21227 			else return visitor.visitChildren(this);
21228 		}
21229 	}
21230 
21231 	public final AlterSwitchContext alterSwitch() throws RecognitionException {
21232 		AlterSwitchContext _localctx = new AlterSwitchContext(_ctx, getState());
21233 		enterRule(_localctx, 448, RULE_alterSwitch);
21234 		int _la;
21235 		try {
21236 			enterOuterAlt(_localctx, 1);
21237 			{
21238 			setState(3036);
21239 			match(SWITCH);
21240 			setState(3039);
21241 			_errHandler.sync(this);
21242 			_la = _input.LA(1);
21243 			if (_la==PARTITION) {
21244 				{
21245 				setState(3037);
21246 				match(PARTITION);
21247 				setState(3038);
21248 				expr(0);
21249 				}
21250 			}
21251 
21252 			setState(3041);
21253 			match(TO);
21254 			setState(3042);
21255 			tableName();
21256 			setState(3045);
21257 			_errHandler.sync(this);
21258 			_la = _input.LA(1);
21259 			if (_la==PARTITION) {
21260 				{
21261 				setState(3043);
21262 				match(PARTITION);
21263 				setState(3044);
21264 				expr(0);
21265 				}
21266 			}
21267 
21268 			setState(3052);
21269 			_errHandler.sync(this);
21270 			switch ( getInterpreter().adaptivePredict(_input,270,_ctx) ) {
21271 			case 1:
21272 				{
21273 				setState(3047);
21274 				match(WITH);
21275 				setState(3048);
21276 				match(LP_);
21277 				setState(3049);
21278 				lowPriorityLockWait();
21279 				setState(3050);
21280 				match(RP_);
21281 				}
21282 				break;
21283 			}
21284 			}
21285 		}
21286 		catch (RecognitionException re) {
21287 			_localctx.exception = re;
21288 			_errHandler.reportError(this, re);
21289 			_errHandler.recover(this, re);
21290 		}
21291 		finally {
21292 			exitRule();
21293 		}
21294 		return _localctx;
21295 	}
21296 
21297 	public static class AlterSetContext extends ParserRuleContext {
21298 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
21299 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
21300 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
21301 		public SetFileStreamClauseContext setFileStreamClause() {
21302 			return getRuleContext(SetFileStreamClauseContext.class,0);
21303 		}
21304 		public SetSystemVersionClauseContext setSystemVersionClause() {
21305 			return getRuleContext(SetSystemVersionClauseContext.class,0);
21306 		}
21307 		public AlterSetContext(ParserRuleContext parent, int invokingState) {
21308 			super(parent, invokingState);
21309 		}
21310 		@Override public int getRuleIndex() { return RULE_alterSet; }
21311 		@Override
21312 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21313 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSet(this);
21314 			else return visitor.visitChildren(this);
21315 		}
21316 	}
21317 
21318 	public final AlterSetContext alterSet() throws RecognitionException {
21319 		AlterSetContext _localctx = new AlterSetContext(_ctx, getState());
21320 		enterRule(_localctx, 450, RULE_alterSet);
21321 		try {
21322 			enterOuterAlt(_localctx, 1);
21323 			{
21324 			setState(3054);
21325 			match(SET);
21326 			setState(3055);
21327 			match(LP_);
21328 			setState(3058);
21329 			_errHandler.sync(this);
21330 			switch (_input.LA(1)) {
21331 			case FILESTREAM_ON:
21332 				{
21333 				setState(3056);
21334 				setFileStreamClause();
21335 				}
21336 				break;
21337 			case SYSTEM_VERSIONING:
21338 				{
21339 				setState(3057);
21340 				setSystemVersionClause();
21341 				}
21342 				break;
21343 			default:
21344 				throw new NoViableAltException(this);
21345 			}
21346 			setState(3060);
21347 			match(RP_);
21348 			}
21349 		}
21350 		catch (RecognitionException re) {
21351 			_localctx.exception = re;
21352 			_errHandler.reportError(this, re);
21353 			_errHandler.recover(this, re);
21354 		}
21355 		finally {
21356 			exitRule();
21357 		}
21358 		return _localctx;
21359 	}
21360 
21361 	public static class SetFileStreamClauseContext extends ParserRuleContext {
21362 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
21363 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
21364 		public SchemaNameContext schemaName() {
21365 			return getRuleContext(SchemaNameContext.class,0);
21366 		}
21367 		public IgnoredIdentifierContext ignoredIdentifier() {
21368 			return getRuleContext(IgnoredIdentifierContext.class,0);
21369 		}
21370 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
21371 		public SetFileStreamClauseContext(ParserRuleContext parent, int invokingState) {
21372 			super(parent, invokingState);
21373 		}
21374 		@Override public int getRuleIndex() { return RULE_setFileStreamClause; }
21375 		@Override
21376 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21377 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetFileStreamClause(this);
21378 			else return visitor.visitChildren(this);
21379 		}
21380 	}
21381 
21382 	public final SetFileStreamClauseContext setFileStreamClause() throws RecognitionException {
21383 		SetFileStreamClauseContext _localctx = new SetFileStreamClauseContext(_ctx, getState());
21384 		enterRule(_localctx, 452, RULE_setFileStreamClause);
21385 		try {
21386 			enterOuterAlt(_localctx, 1);
21387 			{
21388 			setState(3062);
21389 			match(FILESTREAM_ON);
21390 			setState(3063);
21391 			match(EQ_);
21392 			setState(3067);
21393 			_errHandler.sync(this);
21394 			switch ( getInterpreter().adaptivePredict(_input,272,_ctx) ) {
21395 			case 1:
21396 				{
21397 				setState(3064);
21398 				schemaName();
21399 				}
21400 				break;
21401 			case 2:
21402 				{
21403 				setState(3065);
21404 				ignoredIdentifier();
21405 				}
21406 				break;
21407 			case 3:
21408 				{
21409 				setState(3066);
21410 				match(STRING_);
21411 				}
21412 				break;
21413 			}
21414 			}
21415 		}
21416 		catch (RecognitionException re) {
21417 			_localctx.exception = re;
21418 			_errHandler.reportError(this, re);
21419 			_errHandler.recover(this, re);
21420 		}
21421 		finally {
21422 			exitRule();
21423 		}
21424 		return _localctx;
21425 	}
21426 
21427 	public static class SetSystemVersionClauseContext extends ParserRuleContext {
21428 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
21429 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
21430 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
21431 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
21432 		public AlterSetOnClauseContext alterSetOnClause() {
21433 			return getRuleContext(AlterSetOnClauseContext.class,0);
21434 		}
21435 		public SetSystemVersionClauseContext(ParserRuleContext parent, int invokingState) {
21436 			super(parent, invokingState);
21437 		}
21438 		@Override public int getRuleIndex() { return RULE_setSystemVersionClause; }
21439 		@Override
21440 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21441 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetSystemVersionClause(this);
21442 			else return visitor.visitChildren(this);
21443 		}
21444 	}
21445 
21446 	public final SetSystemVersionClauseContext setSystemVersionClause() throws RecognitionException {
21447 		SetSystemVersionClauseContext _localctx = new SetSystemVersionClauseContext(_ctx, getState());
21448 		enterRule(_localctx, 454, RULE_setSystemVersionClause);
21449 		int _la;
21450 		try {
21451 			enterOuterAlt(_localctx, 1);
21452 			{
21453 			setState(3069);
21454 			match(SYSTEM_VERSIONING);
21455 			setState(3070);
21456 			match(EQ_);
21457 			setState(3076);
21458 			_errHandler.sync(this);
21459 			switch (_input.LA(1)) {
21460 			case OFF:
21461 				{
21462 				setState(3071);
21463 				match(OFF);
21464 				}
21465 				break;
21466 			case ON:
21467 				{
21468 				setState(3072);
21469 				match(ON);
21470 				setState(3074);
21471 				_errHandler.sync(this);
21472 				_la = _input.LA(1);
21473 				if (_la==LP_) {
21474 					{
21475 					setState(3073);
21476 					alterSetOnClause();
21477 					}
21478 				}
21479 
21480 				}
21481 				break;
21482 			default:
21483 				throw new NoViableAltException(this);
21484 			}
21485 			}
21486 		}
21487 		catch (RecognitionException re) {
21488 			_localctx.exception = re;
21489 			_errHandler.reportError(this, re);
21490 			_errHandler.recover(this, re);
21491 		}
21492 		finally {
21493 			exitRule();
21494 		}
21495 		return _localctx;
21496 	}
21497 
21498 	public static class AlterSetOnClauseContext extends ParserRuleContext {
21499 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
21500 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
21501 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
21502 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
21503 		public TableNameContext tableName() {
21504 			return getRuleContext(TableNameContext.class,0);
21505 		}
21506 		public DataConsistencyCheckClauseContext dataConsistencyCheckClause() {
21507 			return getRuleContext(DataConsistencyCheckClauseContext.class,0);
21508 		}
21509 		public HistoryRetentionPeriodClauseContext historyRetentionPeriodClause() {
21510 			return getRuleContext(HistoryRetentionPeriodClauseContext.class,0);
21511 		}
21512 		public AlterSetOnClauseContext(ParserRuleContext parent, int invokingState) {
21513 			super(parent, invokingState);
21514 		}
21515 		@Override public int getRuleIndex() { return RULE_alterSetOnClause; }
21516 		@Override
21517 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21518 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSetOnClause(this);
21519 			else return visitor.visitChildren(this);
21520 		}
21521 	}
21522 
21523 	public final AlterSetOnClauseContext alterSetOnClause() throws RecognitionException {
21524 		AlterSetOnClauseContext _localctx = new AlterSetOnClauseContext(_ctx, getState());
21525 		enterRule(_localctx, 456, RULE_alterSetOnClause);
21526 		int _la;
21527 		try {
21528 			enterOuterAlt(_localctx, 1);
21529 			{
21530 			setState(3078);
21531 			match(LP_);
21532 			setState(3082);
21533 			_errHandler.sync(this);
21534 			_la = _input.LA(1);
21535 			if (_la==HISTORY_TABLE) {
21536 				{
21537 				setState(3079);
21538 				match(HISTORY_TABLE);
21539 				setState(3080);
21540 				match(EQ_);
21541 				setState(3081);
21542 				tableName();
21543 				}
21544 			}
21545 
21546 			setState(3085);
21547 			_errHandler.sync(this);
21548 			switch ( getInterpreter().adaptivePredict(_input,276,_ctx) ) {
21549 			case 1:
21550 				{
21551 				setState(3084);
21552 				dataConsistencyCheckClause();
21553 				}
21554 				break;
21555 			}
21556 			setState(3088);
21557 			_errHandler.sync(this);
21558 			_la = _input.LA(1);
21559 			if (_la==COMMA_ || _la==HISTORY_RETENTION_PERIOD) {
21560 				{
21561 				setState(3087);
21562 				historyRetentionPeriodClause();
21563 				}
21564 			}
21565 
21566 			setState(3090);
21567 			match(RP_);
21568 			}
21569 		}
21570 		catch (RecognitionException re) {
21571 			_localctx.exception = re;
21572 			_errHandler.reportError(this, re);
21573 			_errHandler.recover(this, re);
21574 		}
21575 		finally {
21576 			exitRule();
21577 		}
21578 		return _localctx;
21579 	}
21580 
21581 	public static class DataConsistencyCheckClauseContext extends ParserRuleContext {
21582 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
21583 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
21584 		public OnOffOptionContext onOffOption() {
21585 			return getRuleContext(OnOffOptionContext.class,0);
21586 		}
21587 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
21588 		public DataConsistencyCheckClauseContext(ParserRuleContext parent, int invokingState) {
21589 			super(parent, invokingState);
21590 		}
21591 		@Override public int getRuleIndex() { return RULE_dataConsistencyCheckClause; }
21592 		@Override
21593 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21594 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataConsistencyCheckClause(this);
21595 			else return visitor.visitChildren(this);
21596 		}
21597 	}
21598 
21599 	public final DataConsistencyCheckClauseContext dataConsistencyCheckClause() throws RecognitionException {
21600 		DataConsistencyCheckClauseContext _localctx = new DataConsistencyCheckClauseContext(_ctx, getState());
21601 		enterRule(_localctx, 458, RULE_dataConsistencyCheckClause);
21602 		int _la;
21603 		try {
21604 			enterOuterAlt(_localctx, 1);
21605 			{
21606 			setState(3093);
21607 			_errHandler.sync(this);
21608 			_la = _input.LA(1);
21609 			if (_la==COMMA_) {
21610 				{
21611 				setState(3092);
21612 				match(COMMA_);
21613 				}
21614 			}
21615 
21616 			setState(3095);
21617 			match(DATA_CONSISTENCY_CHECK);
21618 			setState(3096);
21619 			match(EQ_);
21620 			setState(3097);
21621 			onOffOption();
21622 			}
21623 		}
21624 		catch (RecognitionException re) {
21625 			_localctx.exception = re;
21626 			_errHandler.reportError(this, re);
21627 			_errHandler.recover(this, re);
21628 		}
21629 		finally {
21630 			exitRule();
21631 		}
21632 		return _localctx;
21633 	}
21634 
21635 	public static class HistoryRetentionPeriodClauseContext extends ParserRuleContext {
21636 		public TerminalNode HISTORY_RETENTION_PERIOD() { return getToken(SQLServerStatementParser.HISTORY_RETENTION_PERIOD, 0); }
21637 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
21638 		public HistoryRetentionPeriodContext historyRetentionPeriod() {
21639 			return getRuleContext(HistoryRetentionPeriodContext.class,0);
21640 		}
21641 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
21642 		public HistoryRetentionPeriodClauseContext(ParserRuleContext parent, int invokingState) {
21643 			super(parent, invokingState);
21644 		}
21645 		@Override public int getRuleIndex() { return RULE_historyRetentionPeriodClause; }
21646 		@Override
21647 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21648 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHistoryRetentionPeriodClause(this);
21649 			else return visitor.visitChildren(this);
21650 		}
21651 	}
21652 
21653 	public final HistoryRetentionPeriodClauseContext historyRetentionPeriodClause() throws RecognitionException {
21654 		HistoryRetentionPeriodClauseContext _localctx = new HistoryRetentionPeriodClauseContext(_ctx, getState());
21655 		enterRule(_localctx, 460, RULE_historyRetentionPeriodClause);
21656 		int _la;
21657 		try {
21658 			enterOuterAlt(_localctx, 1);
21659 			{
21660 			setState(3100);
21661 			_errHandler.sync(this);
21662 			_la = _input.LA(1);
21663 			if (_la==COMMA_) {
21664 				{
21665 				setState(3099);
21666 				match(COMMA_);
21667 				}
21668 			}
21669 
21670 			setState(3102);
21671 			match(HISTORY_RETENTION_PERIOD);
21672 			setState(3103);
21673 			match(EQ_);
21674 			setState(3104);
21675 			historyRetentionPeriod();
21676 			}
21677 		}
21678 		catch (RecognitionException re) {
21679 			_localctx.exception = re;
21680 			_errHandler.reportError(this, re);
21681 			_errHandler.recover(this, re);
21682 		}
21683 		finally {
21684 			exitRule();
21685 		}
21686 		return _localctx;
21687 	}
21688 
21689 	public static class HistoryRetentionPeriodContext extends ParserRuleContext {
21690 		public TerminalNode INFINITE() { return getToken(SQLServerStatementParser.INFINITE, 0); }
21691 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
21692 		public TerminalNode DAY() { return getToken(SQLServerStatementParser.DAY, 0); }
21693 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
21694 		public TerminalNode WEEK() { return getToken(SQLServerStatementParser.WEEK, 0); }
21695 		public TerminalNode WEEKS() { return getToken(SQLServerStatementParser.WEEKS, 0); }
21696 		public TerminalNode MONTH() { return getToken(SQLServerStatementParser.MONTH, 0); }
21697 		public TerminalNode MONTHS() { return getToken(SQLServerStatementParser.MONTHS, 0); }
21698 		public TerminalNode YEAR() { return getToken(SQLServerStatementParser.YEAR, 0); }
21699 		public TerminalNode YEARS() { return getToken(SQLServerStatementParser.YEARS, 0); }
21700 		public HistoryRetentionPeriodContext(ParserRuleContext parent, int invokingState) {
21701 			super(parent, invokingState);
21702 		}
21703 		@Override public int getRuleIndex() { return RULE_historyRetentionPeriod; }
21704 		@Override
21705 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21706 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHistoryRetentionPeriod(this);
21707 			else return visitor.visitChildren(this);
21708 		}
21709 	}
21710 
21711 	public final HistoryRetentionPeriodContext historyRetentionPeriod() throws RecognitionException {
21712 		HistoryRetentionPeriodContext _localctx = new HistoryRetentionPeriodContext(_ctx, getState());
21713 		enterRule(_localctx, 462, RULE_historyRetentionPeriod);
21714 		int _la;
21715 		try {
21716 			setState(3109);
21717 			_errHandler.sync(this);
21718 			switch (_input.LA(1)) {
21719 			case INFINITE:
21720 				enterOuterAlt(_localctx, 1);
21721 				{
21722 				setState(3106);
21723 				match(INFINITE);
21724 				}
21725 				break;
21726 			case NUMBER_:
21727 				enterOuterAlt(_localctx, 2);
21728 				{
21729 				{
21730 				setState(3107);
21731 				match(NUMBER_);
21732 				setState(3108);
21733 				_la = _input.LA(1);
21734 				if ( !(((((_la - 138)) & ~0x3f) == 0 && ((1L << (_la - 138)) & ((1L << (YEAR - 138)) | (1L << (MONTH - 138)) | (1L << (WEEK - 138)) | (1L << (DAY - 138)))) != 0) || ((((_la - 247)) & ~0x3f) == 0 && ((1L << (_la - 247)) & ((1L << (YEARS - 247)) | (1L << (MONTHS - 247)) | (1L << (WEEKS - 247)) | (1L << (DAYS - 247)))) != 0)) ) {
21735 				_errHandler.recoverInline(this);
21736 				}
21737 				else {
21738 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21739 					_errHandler.reportMatch(this);
21740 					consume();
21741 				}
21742 				}
21743 				}
21744 				break;
21745 			default:
21746 				throw new NoViableAltException(this);
21747 			}
21748 		}
21749 		catch (RecognitionException re) {
21750 			_localctx.exception = re;
21751 			_errHandler.reportError(this, re);
21752 			_errHandler.recover(this, re);
21753 		}
21754 		finally {
21755 			exitRule();
21756 		}
21757 		return _localctx;
21758 	}
21759 
21760 	public static class AlterTableTableIndexContext extends ParserRuleContext {
21761 		public IndexWithNameContext indexWithName() {
21762 			return getRuleContext(IndexWithNameContext.class,0);
21763 		}
21764 		public IndexNonClusterClauseContext indexNonClusterClause() {
21765 			return getRuleContext(IndexNonClusterClauseContext.class,0);
21766 		}
21767 		public IndexClusterClauseContext indexClusterClause() {
21768 			return getRuleContext(IndexClusterClauseContext.class,0);
21769 		}
21770 		public AlterTableTableIndexContext(ParserRuleContext parent, int invokingState) {
21771 			super(parent, invokingState);
21772 		}
21773 		@Override public int getRuleIndex() { return RULE_alterTableTableIndex; }
21774 		@Override
21775 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21776 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableTableIndex(this);
21777 			else return visitor.visitChildren(this);
21778 		}
21779 	}
21780 
21781 	public final AlterTableTableIndexContext alterTableTableIndex() throws RecognitionException {
21782 		AlterTableTableIndexContext _localctx = new AlterTableTableIndexContext(_ctx, getState());
21783 		enterRule(_localctx, 464, RULE_alterTableTableIndex);
21784 		try {
21785 			enterOuterAlt(_localctx, 1);
21786 			{
21787 			setState(3111);
21788 			indexWithName();
21789 			setState(3114);
21790 			_errHandler.sync(this);
21791 			switch (_input.LA(1)) {
21792 			case NONCLUSTERED:
21793 				{
21794 				setState(3112);
21795 				indexNonClusterClause();
21796 				}
21797 				break;
21798 			case CLUSTERED:
21799 				{
21800 				setState(3113);
21801 				indexClusterClause();
21802 				}
21803 				break;
21804 			default:
21805 				throw new NoViableAltException(this);
21806 			}
21807 			}
21808 		}
21809 		catch (RecognitionException re) {
21810 			_localctx.exception = re;
21811 			_errHandler.reportError(this, re);
21812 			_errHandler.recover(this, re);
21813 		}
21814 		finally {
21815 			exitRule();
21816 		}
21817 		return _localctx;
21818 	}
21819 
21820 	public static class IndexWithNameContext extends ParserRuleContext {
21821 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
21822 		public IndexNameContext indexName() {
21823 			return getRuleContext(IndexNameContext.class,0);
21824 		}
21825 		public IndexWithNameContext(ParserRuleContext parent, int invokingState) {
21826 			super(parent, invokingState);
21827 		}
21828 		@Override public int getRuleIndex() { return RULE_indexWithName; }
21829 		@Override
21830 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21831 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexWithName(this);
21832 			else return visitor.visitChildren(this);
21833 		}
21834 	}
21835 
21836 	public final IndexWithNameContext indexWithName() throws RecognitionException {
21837 		IndexWithNameContext _localctx = new IndexWithNameContext(_ctx, getState());
21838 		enterRule(_localctx, 466, RULE_indexWithName);
21839 		try {
21840 			enterOuterAlt(_localctx, 1);
21841 			{
21842 			setState(3116);
21843 			match(INDEX);
21844 			setState(3117);
21845 			indexName();
21846 			}
21847 		}
21848 		catch (RecognitionException re) {
21849 			_localctx.exception = re;
21850 			_errHandler.reportError(this, re);
21851 			_errHandler.recover(this, re);
21852 		}
21853 		finally {
21854 			exitRule();
21855 		}
21856 		return _localctx;
21857 	}
21858 
21859 	public static class IndexNonClusterClauseContext extends ParserRuleContext {
21860 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
21861 		public HashWithBucketContext hashWithBucket() {
21862 			return getRuleContext(HashWithBucketContext.class,0);
21863 		}
21864 		public ColumnNamesWithSortContext columnNamesWithSort() {
21865 			return getRuleContext(ColumnNamesWithSortContext.class,0);
21866 		}
21867 		public AlterTableIndexOnClauseContext alterTableIndexOnClause() {
21868 			return getRuleContext(AlterTableIndexOnClauseContext.class,0);
21869 		}
21870 		public IndexNonClusterClauseContext(ParserRuleContext parent, int invokingState) {
21871 			super(parent, invokingState);
21872 		}
21873 		@Override public int getRuleIndex() { return RULE_indexNonClusterClause; }
21874 		@Override
21875 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21876 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexNonClusterClause(this);
21877 			else return visitor.visitChildren(this);
21878 		}
21879 	}
21880 
21881 	public final IndexNonClusterClauseContext indexNonClusterClause() throws RecognitionException {
21882 		IndexNonClusterClauseContext _localctx = new IndexNonClusterClauseContext(_ctx, getState());
21883 		enterRule(_localctx, 468, RULE_indexNonClusterClause);
21884 		int _la;
21885 		try {
21886 			enterOuterAlt(_localctx, 1);
21887 			{
21888 			setState(3119);
21889 			match(NONCLUSTERED);
21890 			setState(3125);
21891 			_errHandler.sync(this);
21892 			switch (_input.LA(1)) {
21893 			case HASH:
21894 				{
21895 				setState(3120);
21896 				hashWithBucket();
21897 				}
21898 				break;
21899 			case LP_:
21900 				{
21901 				setState(3121);
21902 				columnNamesWithSort();
21903 				setState(3123);
21904 				_errHandler.sync(this);
21905 				_la = _input.LA(1);
21906 				if (_la==ON || _la==DEFAULT) {
21907 					{
21908 					setState(3122);
21909 					alterTableIndexOnClause();
21910 					}
21911 				}
21912 
21913 				}
21914 				break;
21915 			default:
21916 				throw new NoViableAltException(this);
21917 			}
21918 			}
21919 		}
21920 		catch (RecognitionException re) {
21921 			_localctx.exception = re;
21922 			_errHandler.reportError(this, re);
21923 			_errHandler.recover(this, re);
21924 		}
21925 		finally {
21926 			exitRule();
21927 		}
21928 		return _localctx;
21929 	}
21930 
21931 	public static class AlterTableIndexOnClauseContext extends ParserRuleContext {
21932 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
21933 		public IgnoredIdentifierContext ignoredIdentifier() {
21934 			return getRuleContext(IgnoredIdentifierContext.class,0);
21935 		}
21936 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
21937 		public AlterTableIndexOnClauseContext(ParserRuleContext parent, int invokingState) {
21938 			super(parent, invokingState);
21939 		}
21940 		@Override public int getRuleIndex() { return RULE_alterTableIndexOnClause; }
21941 		@Override
21942 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21943 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableIndexOnClause(this);
21944 			else return visitor.visitChildren(this);
21945 		}
21946 	}
21947 
21948 	public final AlterTableIndexOnClauseContext alterTableIndexOnClause() throws RecognitionException {
21949 		AlterTableIndexOnClauseContext _localctx = new AlterTableIndexOnClauseContext(_ctx, getState());
21950 		enterRule(_localctx, 470, RULE_alterTableIndexOnClause);
21951 		try {
21952 			setState(3130);
21953 			_errHandler.sync(this);
21954 			switch (_input.LA(1)) {
21955 			case ON:
21956 				enterOuterAlt(_localctx, 1);
21957 				{
21958 				setState(3127);
21959 				match(ON);
21960 				setState(3128);
21961 				ignoredIdentifier();
21962 				}
21963 				break;
21964 			case DEFAULT:
21965 				enterOuterAlt(_localctx, 2);
21966 				{
21967 				setState(3129);
21968 				match(DEFAULT);
21969 				}
21970 				break;
21971 			default:
21972 				throw new NoViableAltException(this);
21973 			}
21974 		}
21975 		catch (RecognitionException re) {
21976 			_localctx.exception = re;
21977 			_errHandler.reportError(this, re);
21978 			_errHandler.recover(this, re);
21979 		}
21980 		finally {
21981 			exitRule();
21982 		}
21983 		return _localctx;
21984 	}
21985 
21986 	public static class IndexClusterClauseContext extends ParserRuleContext {
21987 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
21988 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
21989 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
21990 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
21991 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
21992 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
21993 		public IndexOnClauseContext indexOnClause() {
21994 			return getRuleContext(IndexOnClauseContext.class,0);
21995 		}
21996 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
21997 		public IndexClusterClauseContext(ParserRuleContext parent, int invokingState) {
21998 			super(parent, invokingState);
21999 		}
22000 		@Override public int getRuleIndex() { return RULE_indexClusterClause; }
22001 		@Override
22002 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22003 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexClusterClause(this);
22004 			else return visitor.visitChildren(this);
22005 		}
22006 	}
22007 
22008 	public final IndexClusterClauseContext indexClusterClause() throws RecognitionException {
22009 		IndexClusterClauseContext _localctx = new IndexClusterClauseContext(_ctx, getState());
22010 		enterRule(_localctx, 472, RULE_indexClusterClause);
22011 		int _la;
22012 		try {
22013 			enterOuterAlt(_localctx, 1);
22014 			{
22015 			setState(3132);
22016 			match(CLUSTERED);
22017 			setState(3133);
22018 			match(COLUMNSTORE);
22019 			setState(3141);
22020 			_errHandler.sync(this);
22021 			switch ( getInterpreter().adaptivePredict(_input,286,_ctx) ) {
22022 			case 1:
22023 				{
22024 				setState(3134);
22025 				match(WITH);
22026 				setState(3135);
22027 				match(COMPRESSION_DELAY);
22028 				setState(3136);
22029 				match(EQ_);
22030 				setState(3137);
22031 				match(NUMBER_);
22032 				setState(3139);
22033 				_errHandler.sync(this);
22034 				_la = _input.LA(1);
22035 				if (_la==MINUTES) {
22036 					{
22037 					setState(3138);
22038 					match(MINUTES);
22039 					}
22040 				}
22041 
22042 				}
22043 				break;
22044 			}
22045 			setState(3144);
22046 			_errHandler.sync(this);
22047 			_la = _input.LA(1);
22048 			if (_la==ON) {
22049 				{
22050 				setState(3143);
22051 				indexOnClause();
22052 				}
22053 			}
22054 
22055 			}
22056 		}
22057 		catch (RecognitionException re) {
22058 			_localctx.exception = re;
22059 			_errHandler.reportError(this, re);
22060 			_errHandler.recover(this, re);
22061 		}
22062 		finally {
22063 			exitRule();
22064 		}
22065 		return _localctx;
22066 	}
22067 
22068 	public static class AlterTableOptionContext extends ParserRuleContext {
22069 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
22070 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22071 		public TerminalNode LOCK_ESCALATION() { return getToken(SQLServerStatementParser.LOCK_ESCALATION, 0); }
22072 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22073 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22074 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
22075 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
22076 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
22077 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
22078 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
22079 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
22080 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
22081 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
22082 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
22083 		public OnHistoryTableClauseContext onHistoryTableClause() {
22084 			return getRuleContext(OnHistoryTableClauseContext.class,0);
22085 		}
22086 		public AlterTableOptionContext(ParserRuleContext parent, int invokingState) {
22087 			super(parent, invokingState);
22088 		}
22089 		@Override public int getRuleIndex() { return RULE_alterTableOption; }
22090 		@Override
22091 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22092 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableOption(this);
22093 			else return visitor.visitChildren(this);
22094 		}
22095 	}
22096 
22097 	public final AlterTableOptionContext alterTableOption() throws RecognitionException {
22098 		AlterTableOptionContext _localctx = new AlterTableOptionContext(_ctx, getState());
22099 		enterRule(_localctx, 474, RULE_alterTableOption);
22100 		int _la;
22101 		try {
22102 			setState(3164);
22103 			_errHandler.sync(this);
22104 			switch (_input.LA(1)) {
22105 			case SET:
22106 				enterOuterAlt(_localctx, 1);
22107 				{
22108 				setState(3146);
22109 				match(SET);
22110 				setState(3147);
22111 				match(LP_);
22112 				setState(3148);
22113 				match(LOCK_ESCALATION);
22114 				setState(3149);
22115 				match(EQ_);
22116 				setState(3150);
22117 				_la = _input.LA(1);
22118 				if ( !(_la==TABLE || _la==DISABLE || _la==AUTO) ) {
22119 				_errHandler.recoverInline(this);
22120 				}
22121 				else {
22122 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22123 					_errHandler.reportMatch(this);
22124 					consume();
22125 				}
22126 				setState(3151);
22127 				match(RP_);
22128 				}
22129 				break;
22130 			case MEMORY_OPTIMIZED:
22131 				enterOuterAlt(_localctx, 2);
22132 				{
22133 				setState(3152);
22134 				match(MEMORY_OPTIMIZED);
22135 				setState(3153);
22136 				match(EQ_);
22137 				setState(3154);
22138 				match(ON);
22139 				}
22140 				break;
22141 			case DURABILITY:
22142 				enterOuterAlt(_localctx, 3);
22143 				{
22144 				setState(3155);
22145 				match(DURABILITY);
22146 				setState(3156);
22147 				match(EQ_);
22148 				setState(3157);
22149 				_la = _input.LA(1);
22150 				if ( !(_la==SCHEMA_AND_DATA || _la==SCHEMA_ONLY) ) {
22151 				_errHandler.recoverInline(this);
22152 				}
22153 				else {
22154 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22155 					_errHandler.reportMatch(this);
22156 					consume();
22157 				}
22158 				}
22159 				break;
22160 			case SYSTEM_VERSIONING:
22161 				enterOuterAlt(_localctx, 4);
22162 				{
22163 				setState(3158);
22164 				match(SYSTEM_VERSIONING);
22165 				setState(3159);
22166 				match(EQ_);
22167 				setState(3160);
22168 				match(ON);
22169 				setState(3162);
22170 				_errHandler.sync(this);
22171 				_la = _input.LA(1);
22172 				if (_la==LP_) {
22173 					{
22174 					setState(3161);
22175 					onHistoryTableClause();
22176 					}
22177 				}
22178 
22179 				}
22180 				break;
22181 			default:
22182 				throw new NoViableAltException(this);
22183 			}
22184 		}
22185 		catch (RecognitionException re) {
22186 			_localctx.exception = re;
22187 			_errHandler.reportError(this, re);
22188 			_errHandler.recover(this, re);
22189 		}
22190 		finally {
22191 			exitRule();
22192 		}
22193 		return _localctx;
22194 	}
22195 
22196 	public static class OnHistoryTableClauseContext extends ParserRuleContext {
22197 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22198 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
22199 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
22200 		public TerminalNode EQ_(int i) {
22201 			return getToken(SQLServerStatementParser.EQ_, i);
22202 		}
22203 		public TableNameContext tableName() {
22204 			return getRuleContext(TableNameContext.class,0);
22205 		}
22206 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22207 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
22208 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
22209 		public OnOffOptionContext onOffOption() {
22210 			return getRuleContext(OnOffOptionContext.class,0);
22211 		}
22212 		public OnHistoryTableClauseContext(ParserRuleContext parent, int invokingState) {
22213 			super(parent, invokingState);
22214 		}
22215 		@Override public int getRuleIndex() { return RULE_onHistoryTableClause; }
22216 		@Override
22217 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22218 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnHistoryTableClause(this);
22219 			else return visitor.visitChildren(this);
22220 		}
22221 	}
22222 
22223 	public final OnHistoryTableClauseContext onHistoryTableClause() throws RecognitionException {
22224 		OnHistoryTableClauseContext _localctx = new OnHistoryTableClauseContext(_ctx, getState());
22225 		enterRule(_localctx, 476, RULE_onHistoryTableClause);
22226 		int _la;
22227 		try {
22228 			enterOuterAlt(_localctx, 1);
22229 			{
22230 			setState(3166);
22231 			match(LP_);
22232 			setState(3167);
22233 			match(HISTORY_TABLE);
22234 			setState(3168);
22235 			match(EQ_);
22236 			setState(3169);
22237 			tableName();
22238 			setState(3174);
22239 			_errHandler.sync(this);
22240 			_la = _input.LA(1);
22241 			if (_la==COMMA_) {
22242 				{
22243 				setState(3170);
22244 				match(COMMA_);
22245 				setState(3171);
22246 				match(DATA_CONSISTENCY_CHECK);
22247 				setState(3172);
22248 				match(EQ_);
22249 				setState(3173);
22250 				onOffOption();
22251 				}
22252 			}
22253 
22254 			setState(3176);
22255 			match(RP_);
22256 			}
22257 		}
22258 		catch (RecognitionException re) {
22259 			_localctx.exception = re;
22260 			_errHandler.reportError(this, re);
22261 			_errHandler.recover(this, re);
22262 		}
22263 		finally {
22264 			exitRule();
22265 		}
22266 		return _localctx;
22267 	}
22268 
22269 	public static class CreateDatabaseClauseContext extends ParserRuleContext {
22270 		public TerminalNode CONTAINMENT() { return getToken(SQLServerStatementParser.CONTAINMENT, 0); }
22271 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22272 		public FileDefinitionClauseContext fileDefinitionClause() {
22273 			return getRuleContext(FileDefinitionClauseContext.class,0);
22274 		}
22275 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
22276 		public IgnoredIdentifierContext ignoredIdentifier() {
22277 			return getRuleContext(IgnoredIdentifierContext.class,0);
22278 		}
22279 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
22280 		public List<DatabaseOptionContext> databaseOption() {
22281 			return getRuleContexts(DatabaseOptionContext.class);
22282 		}
22283 		public DatabaseOptionContext databaseOption(int i) {
22284 			return getRuleContext(DatabaseOptionContext.class,i);
22285 		}
22286 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
22287 		public TerminalNode PARTIAL() { return getToken(SQLServerStatementParser.PARTIAL, 0); }
22288 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22289 		public TerminalNode COMMA_(int i) {
22290 			return getToken(SQLServerStatementParser.COMMA_, i);
22291 		}
22292 		public CreateDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
22293 			super(parent, invokingState);
22294 		}
22295 		@Override public int getRuleIndex() { return RULE_createDatabaseClause; }
22296 		@Override
22297 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22298 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDatabaseClause(this);
22299 			else return visitor.visitChildren(this);
22300 		}
22301 	}
22302 
22303 	public final CreateDatabaseClauseContext createDatabaseClause() throws RecognitionException {
22304 		CreateDatabaseClauseContext _localctx = new CreateDatabaseClauseContext(_ctx, getState());
22305 		enterRule(_localctx, 478, RULE_createDatabaseClause);
22306 		int _la;
22307 		try {
22308 			enterOuterAlt(_localctx, 1);
22309 			{
22310 			setState(3181);
22311 			_errHandler.sync(this);
22312 			_la = _input.LA(1);
22313 			if (_la==CONTAINMENT) {
22314 				{
22315 				setState(3178);
22316 				match(CONTAINMENT);
22317 				setState(3179);
22318 				match(EQ_);
22319 				setState(3180);
22320 				_la = _input.LA(1);
22321 				if ( !(_la==NONE || _la==PARTIAL) ) {
22322 				_errHandler.recoverInline(this);
22323 				}
22324 				else {
22325 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22326 					_errHandler.reportMatch(this);
22327 					consume();
22328 				}
22329 				}
22330 			}
22331 
22332 			setState(3184);
22333 			_errHandler.sync(this);
22334 			_la = _input.LA(1);
22335 			if (_la==ON) {
22336 				{
22337 				setState(3183);
22338 				fileDefinitionClause();
22339 				}
22340 			}
22341 
22342 			setState(3188);
22343 			_errHandler.sync(this);
22344 			_la = _input.LA(1);
22345 			if (_la==COLLATE) {
22346 				{
22347 				setState(3186);
22348 				match(COLLATE);
22349 				setState(3187);
22350 				ignoredIdentifier();
22351 				}
22352 			}
22353 
22354 			setState(3199);
22355 			_errHandler.sync(this);
22356 			_la = _input.LA(1);
22357 			if (_la==WITH) {
22358 				{
22359 				setState(3190);
22360 				match(WITH);
22361 				setState(3191);
22362 				databaseOption();
22363 				setState(3196);
22364 				_errHandler.sync(this);
22365 				_la = _input.LA(1);
22366 				while (_la==COMMA_) {
22367 					{
22368 					{
22369 					setState(3192);
22370 					match(COMMA_);
22371 					setState(3193);
22372 					databaseOption();
22373 					}
22374 					}
22375 					setState(3198);
22376 					_errHandler.sync(this);
22377 					_la = _input.LA(1);
22378 				}
22379 				}
22380 			}
22381 
22382 			}
22383 		}
22384 		catch (RecognitionException re) {
22385 			_localctx.exception = re;
22386 			_errHandler.reportError(this, re);
22387 			_errHandler.recover(this, re);
22388 		}
22389 		finally {
22390 			exitRule();
22391 		}
22392 		return _localctx;
22393 	}
22394 
22395 	public static class FileDefinitionClauseContext extends ParserRuleContext {
22396 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
22397 		public List<FileSpecContext> fileSpec() {
22398 			return getRuleContexts(FileSpecContext.class);
22399 		}
22400 		public FileSpecContext fileSpec(int i) {
22401 			return getRuleContext(FileSpecContext.class,i);
22402 		}
22403 		public DatabaseLogOnsContext databaseLogOns() {
22404 			return getRuleContext(DatabaseLogOnsContext.class,0);
22405 		}
22406 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
22407 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22408 		public TerminalNode COMMA_(int i) {
22409 			return getToken(SQLServerStatementParser.COMMA_, i);
22410 		}
22411 		public List<DatabaseFileGroupContext> databaseFileGroup() {
22412 			return getRuleContexts(DatabaseFileGroupContext.class);
22413 		}
22414 		public DatabaseFileGroupContext databaseFileGroup(int i) {
22415 			return getRuleContext(DatabaseFileGroupContext.class,i);
22416 		}
22417 		public FileDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
22418 			super(parent, invokingState);
22419 		}
22420 		@Override public int getRuleIndex() { return RULE_fileDefinitionClause; }
22421 		@Override
22422 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22423 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileDefinitionClause(this);
22424 			else return visitor.visitChildren(this);
22425 		}
22426 	}
22427 
22428 	public final FileDefinitionClauseContext fileDefinitionClause() throws RecognitionException {
22429 		FileDefinitionClauseContext _localctx = new FileDefinitionClauseContext(_ctx, getState());
22430 		enterRule(_localctx, 480, RULE_fileDefinitionClause);
22431 		int _la;
22432 		try {
22433 			int _alt;
22434 			enterOuterAlt(_localctx, 1);
22435 			{
22436 			setState(3201);
22437 			match(ON);
22438 			setState(3203);
22439 			_errHandler.sync(this);
22440 			_la = _input.LA(1);
22441 			if (_la==PRIMARY) {
22442 				{
22443 				setState(3202);
22444 				match(PRIMARY);
22445 				}
22446 			}
22447 
22448 			setState(3205);
22449 			fileSpec();
22450 			setState(3210);
22451 			_errHandler.sync(this);
22452 			_alt = getInterpreter().adaptivePredict(_input,297,_ctx);
22453 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
22454 				if ( _alt==1 ) {
22455 					{
22456 					{
22457 					setState(3206);
22458 					match(COMMA_);
22459 					setState(3207);
22460 					fileSpec();
22461 					}
22462 					} 
22463 				}
22464 				setState(3212);
22465 				_errHandler.sync(this);
22466 				_alt = getInterpreter().adaptivePredict(_input,297,_ctx);
22467 			}
22468 			setState(3217);
22469 			_errHandler.sync(this);
22470 			_la = _input.LA(1);
22471 			while (_la==COMMA_) {
22472 				{
22473 				{
22474 				setState(3213);
22475 				match(COMMA_);
22476 				setState(3214);
22477 				databaseFileGroup();
22478 				}
22479 				}
22480 				setState(3219);
22481 				_errHandler.sync(this);
22482 				_la = _input.LA(1);
22483 			}
22484 			setState(3220);
22485 			databaseLogOns();
22486 			}
22487 		}
22488 		catch (RecognitionException re) {
22489 			_localctx.exception = re;
22490 			_errHandler.reportError(this, re);
22491 			_errHandler.recover(this, re);
22492 		}
22493 		finally {
22494 			exitRule();
22495 		}
22496 		return _localctx;
22497 	}
22498 
22499 	public static class DatabaseOptionContext extends ParserRuleContext {
22500 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
22501 		public List<FileStreamOptionContext> fileStreamOption() {
22502 			return getRuleContexts(FileStreamOptionContext.class);
22503 		}
22504 		public FileStreamOptionContext fileStreamOption(int i) {
22505 			return getRuleContext(FileStreamOptionContext.class,i);
22506 		}
22507 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22508 		public TerminalNode COMMA_(int i) {
22509 			return getToken(SQLServerStatementParser.COMMA_, i);
22510 		}
22511 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
22512 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
22513 		public TerminalNode EQ_(int i) {
22514 			return getToken(SQLServerStatementParser.EQ_, i);
22515 		}
22516 		public IgnoredIdentifierContext ignoredIdentifier() {
22517 			return getRuleContext(IgnoredIdentifierContext.class,0);
22518 		}
22519 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
22520 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
22521 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
22522 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
22523 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
22524 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
22525 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
22526 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
22527 		public TerminalNode PERSISTENT_LOG_BUFFER() { return getToken(SQLServerStatementParser.PERSISTENT_LOG_BUFFER, 0); }
22528 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
22529 		public DatabaseOptionContext(ParserRuleContext parent, int invokingState) {
22530 			super(parent, invokingState);
22531 		}
22532 		@Override public int getRuleIndex() { return RULE_databaseOption; }
22533 		@Override
22534 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22535 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseOption(this);
22536 			else return visitor.visitChildren(this);
22537 		}
22538 	}
22539 
22540 	public final DatabaseOptionContext databaseOption() throws RecognitionException {
22541 		DatabaseOptionContext _localctx = new DatabaseOptionContext(_ctx, getState());
22542 		enterRule(_localctx, 482, RULE_databaseOption);
22543 		int _la;
22544 		try {
22545 			int _alt;
22546 			setState(3256);
22547 			_errHandler.sync(this);
22548 			switch (_input.LA(1)) {
22549 			case FILESTREAM:
22550 				enterOuterAlt(_localctx, 1);
22551 				{
22552 				setState(3222);
22553 				match(FILESTREAM);
22554 				setState(3223);
22555 				fileStreamOption();
22556 				setState(3228);
22557 				_errHandler.sync(this);
22558 				_alt = getInterpreter().adaptivePredict(_input,299,_ctx);
22559 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
22560 					if ( _alt==1 ) {
22561 						{
22562 						{
22563 						setState(3224);
22564 						match(COMMA_);
22565 						setState(3225);
22566 						fileStreamOption();
22567 						}
22568 						} 
22569 					}
22570 					setState(3230);
22571 					_errHandler.sync(this);
22572 					_alt = getInterpreter().adaptivePredict(_input,299,_ctx);
22573 				}
22574 				}
22575 				break;
22576 			case DEFAULT_FULLTEXT_LANGUAGE:
22577 				enterOuterAlt(_localctx, 2);
22578 				{
22579 				setState(3231);
22580 				match(DEFAULT_FULLTEXT_LANGUAGE);
22581 				setState(3232);
22582 				match(EQ_);
22583 				setState(3233);
22584 				ignoredIdentifier();
22585 				}
22586 				break;
22587 			case DEFAULT_LANGUAGE:
22588 				enterOuterAlt(_localctx, 3);
22589 				{
22590 				setState(3234);
22591 				match(DEFAULT_LANGUAGE);
22592 				setState(3235);
22593 				match(EQ_);
22594 				setState(3236);
22595 				ignoredIdentifier();
22596 				}
22597 				break;
22598 			case NESTED_TRIGGERS:
22599 				enterOuterAlt(_localctx, 4);
22600 				{
22601 				setState(3237);
22602 				match(NESTED_TRIGGERS);
22603 				setState(3238);
22604 				match(EQ_);
22605 				setState(3239);
22606 				_la = _input.LA(1);
22607 				if ( !(_la==ON || _la==OFF) ) {
22608 				_errHandler.recoverInline(this);
22609 				}
22610 				else {
22611 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22612 					_errHandler.reportMatch(this);
22613 					consume();
22614 				}
22615 				}
22616 				break;
22617 			case TRANSFORM_NOISE_WORDS:
22618 				enterOuterAlt(_localctx, 5);
22619 				{
22620 				setState(3240);
22621 				match(TRANSFORM_NOISE_WORDS);
22622 				setState(3241);
22623 				match(EQ_);
22624 				setState(3242);
22625 				_la = _input.LA(1);
22626 				if ( !(_la==ON || _la==OFF) ) {
22627 				_errHandler.recoverInline(this);
22628 				}
22629 				else {
22630 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22631 					_errHandler.reportMatch(this);
22632 					consume();
22633 				}
22634 				}
22635 				break;
22636 			case TWO_DIGIT_YEAR_CUTOFF:
22637 				enterOuterAlt(_localctx, 6);
22638 				{
22639 				setState(3243);
22640 				match(TWO_DIGIT_YEAR_CUTOFF);
22641 				setState(3244);
22642 				match(EQ_);
22643 				setState(3245);
22644 				ignoredIdentifier();
22645 				}
22646 				break;
22647 			case DB_CHAINING:
22648 				enterOuterAlt(_localctx, 7);
22649 				{
22650 				setState(3246);
22651 				match(DB_CHAINING);
22652 				setState(3247);
22653 				_la = _input.LA(1);
22654 				if ( !(_la==ON || _la==OFF) ) {
22655 				_errHandler.recoverInline(this);
22656 				}
22657 				else {
22658 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22659 					_errHandler.reportMatch(this);
22660 					consume();
22661 				}
22662 				}
22663 				break;
22664 			case TRUSTWORTHY:
22665 				enterOuterAlt(_localctx, 8);
22666 				{
22667 				setState(3248);
22668 				match(TRUSTWORTHY);
22669 				setState(3249);
22670 				_la = _input.LA(1);
22671 				if ( !(_la==ON || _la==OFF) ) {
22672 				_errHandler.recoverInline(this);
22673 				}
22674 				else {
22675 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22676 					_errHandler.reportMatch(this);
22677 					consume();
22678 				}
22679 				}
22680 				break;
22681 			case PERSISTENT_LOG_BUFFER:
22682 				enterOuterAlt(_localctx, 9);
22683 				{
22684 				setState(3250);
22685 				match(PERSISTENT_LOG_BUFFER);
22686 				setState(3251);
22687 				match(EQ_);
22688 				setState(3252);
22689 				match(ON);
22690 				{
22691 				setState(3253);
22692 				match(DIRECTORY_NAME);
22693 				setState(3254);
22694 				match(EQ_);
22695 				setState(3255);
22696 				ignoredIdentifier();
22697 				}
22698 				}
22699 				break;
22700 			default:
22701 				throw new NoViableAltException(this);
22702 			}
22703 		}
22704 		catch (RecognitionException re) {
22705 			_localctx.exception = re;
22706 			_errHandler.reportError(this, re);
22707 			_errHandler.recover(this, re);
22708 		}
22709 		finally {
22710 			exitRule();
22711 		}
22712 		return _localctx;
22713 	}
22714 
22715 	public static class FileStreamOptionContext extends ParserRuleContext {
22716 		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(SQLServerStatementParser.NON_TRANSACTED_ACCESS, 0); }
22717 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22718 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
22719 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
22720 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
22721 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
22722 		public IgnoredIdentifierContext ignoredIdentifier() {
22723 			return getRuleContext(IgnoredIdentifierContext.class,0);
22724 		}
22725 		public FileStreamOptionContext(ParserRuleContext parent, int invokingState) {
22726 			super(parent, invokingState);
22727 		}
22728 		@Override public int getRuleIndex() { return RULE_fileStreamOption; }
22729 		@Override
22730 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22731 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileStreamOption(this);
22732 			else return visitor.visitChildren(this);
22733 		}
22734 	}
22735 
22736 	public final FileStreamOptionContext fileStreamOption() throws RecognitionException {
22737 		FileStreamOptionContext _localctx = new FileStreamOptionContext(_ctx, getState());
22738 		enterRule(_localctx, 484, RULE_fileStreamOption);
22739 		int _la;
22740 		try {
22741 			setState(3264);
22742 			_errHandler.sync(this);
22743 			switch (_input.LA(1)) {
22744 			case NON_TRANSACTED_ACCESS:
22745 				enterOuterAlt(_localctx, 1);
22746 				{
22747 				setState(3258);
22748 				match(NON_TRANSACTED_ACCESS);
22749 				setState(3259);
22750 				match(EQ_);
22751 				setState(3260);
22752 				_la = _input.LA(1);
22753 				if ( !(_la==FULL || _la==READ_ONLY || _la==OFF) ) {
22754 				_errHandler.recoverInline(this);
22755 				}
22756 				else {
22757 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22758 					_errHandler.reportMatch(this);
22759 					consume();
22760 				}
22761 				}
22762 				break;
22763 			case DIRECTORY_NAME:
22764 				enterOuterAlt(_localctx, 2);
22765 				{
22766 				setState(3261);
22767 				match(DIRECTORY_NAME);
22768 				setState(3262);
22769 				match(EQ_);
22770 				setState(3263);
22771 				ignoredIdentifier();
22772 				}
22773 				break;
22774 			default:
22775 				throw new NoViableAltException(this);
22776 			}
22777 		}
22778 		catch (RecognitionException re) {
22779 			_localctx.exception = re;
22780 			_errHandler.reportError(this, re);
22781 			_errHandler.recover(this, re);
22782 		}
22783 		finally {
22784 			exitRule();
22785 		}
22786 		return _localctx;
22787 	}
22788 
22789 	public static class FileSpecContext extends ParserRuleContext {
22790 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22791 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
22792 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
22793 		public TerminalNode EQ_(int i) {
22794 			return getToken(SQLServerStatementParser.EQ_, i);
22795 		}
22796 		public IgnoredIdentifierContext ignoredIdentifier() {
22797 			return getRuleContext(IgnoredIdentifierContext.class,0);
22798 		}
22799 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
22800 		public TerminalNode FILENAME() { return getToken(SQLServerStatementParser.FILENAME, 0); }
22801 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
22802 		public DatabaseFileSpecOptionContext databaseFileSpecOption() {
22803 			return getRuleContext(DatabaseFileSpecOptionContext.class,0);
22804 		}
22805 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22806 		public FileSpecContext(ParserRuleContext parent, int invokingState) {
22807 			super(parent, invokingState);
22808 		}
22809 		@Override public int getRuleIndex() { return RULE_fileSpec; }
22810 		@Override
22811 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22812 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileSpec(this);
22813 			else return visitor.visitChildren(this);
22814 		}
22815 	}
22816 
22817 	public final FileSpecContext fileSpec() throws RecognitionException {
22818 		FileSpecContext _localctx = new FileSpecContext(_ctx, getState());
22819 		enterRule(_localctx, 486, RULE_fileSpec);
22820 		try {
22821 			enterOuterAlt(_localctx, 1);
22822 			{
22823 			setState(3266);
22824 			match(LP_);
22825 			setState(3267);
22826 			match(NAME);
22827 			setState(3268);
22828 			match(EQ_);
22829 			setState(3269);
22830 			ignoredIdentifier();
22831 			setState(3270);
22832 			match(COMMA_);
22833 			setState(3271);
22834 			match(FILENAME);
22835 			setState(3272);
22836 			match(EQ_);
22837 			setState(3273);
22838 			match(STRING_);
22839 			setState(3274);
22840 			databaseFileSpecOption();
22841 			setState(3275);
22842 			match(RP_);
22843 			}
22844 		}
22845 		catch (RecognitionException re) {
22846 			_localctx.exception = re;
22847 			_errHandler.reportError(this, re);
22848 			_errHandler.recover(this, re);
22849 		}
22850 		finally {
22851 			exitRule();
22852 		}
22853 		return _localctx;
22854 	}
22855 
22856 	public static class DatabaseFileSpecOptionContext extends ParserRuleContext {
22857 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22858 		public TerminalNode COMMA_(int i) {
22859 			return getToken(SQLServerStatementParser.COMMA_, i);
22860 		}
22861 		public TerminalNode SIZE() { return getToken(SQLServerStatementParser.SIZE, 0); }
22862 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
22863 		public TerminalNode EQ_(int i) {
22864 			return getToken(SQLServerStatementParser.EQ_, i);
22865 		}
22866 		public List<NumberLiteralsContext> numberLiterals() {
22867 			return getRuleContexts(NumberLiteralsContext.class);
22868 		}
22869 		public NumberLiteralsContext numberLiterals(int i) {
22870 			return getRuleContext(NumberLiteralsContext.class,i);
22871 		}
22872 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
22873 		public TerminalNode FILEGROWTH() { return getToken(SQLServerStatementParser.FILEGROWTH, 0); }
22874 		public TerminalNode UNLIMITED() { return getToken(SQLServerStatementParser.UNLIMITED, 0); }
22875 		public List<TerminalNode> KB() { return getTokens(SQLServerStatementParser.KB); }
22876 		public TerminalNode KB(int i) {
22877 			return getToken(SQLServerStatementParser.KB, i);
22878 		}
22879 		public List<TerminalNode> MB() { return getTokens(SQLServerStatementParser.MB); }
22880 		public TerminalNode MB(int i) {
22881 			return getToken(SQLServerStatementParser.MB, i);
22882 		}
22883 		public List<TerminalNode> GB() { return getTokens(SQLServerStatementParser.GB); }
22884 		public TerminalNode GB(int i) {
22885 			return getToken(SQLServerStatementParser.GB, i);
22886 		}
22887 		public List<TerminalNode> TB() { return getTokens(SQLServerStatementParser.TB); }
22888 		public TerminalNode TB(int i) {
22889 			return getToken(SQLServerStatementParser.TB, i);
22890 		}
22891 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
22892 		public DatabaseFileSpecOptionContext(ParserRuleContext parent, int invokingState) {
22893 			super(parent, invokingState);
22894 		}
22895 		@Override public int getRuleIndex() { return RULE_databaseFileSpecOption; }
22896 		@Override
22897 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22898 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileSpecOption(this);
22899 			else return visitor.visitChildren(this);
22900 		}
22901 	}
22902 
22903 	public final DatabaseFileSpecOptionContext databaseFileSpecOption() throws RecognitionException {
22904 		DatabaseFileSpecOptionContext _localctx = new DatabaseFileSpecOptionContext(_ctx, getState());
22905 		enterRule(_localctx, 488, RULE_databaseFileSpecOption);
22906 		int _la;
22907 		try {
22908 			enterOuterAlt(_localctx, 1);
22909 			{
22910 			setState(3284);
22911 			_errHandler.sync(this);
22912 			switch ( getInterpreter().adaptivePredict(_input,303,_ctx) ) {
22913 			case 1:
22914 				{
22915 				setState(3277);
22916 				match(COMMA_);
22917 				setState(3278);
22918 				match(SIZE);
22919 				setState(3279);
22920 				match(EQ_);
22921 				setState(3280);
22922 				numberLiterals();
22923 				setState(3282);
22924 				_errHandler.sync(this);
22925 				_la = _input.LA(1);
22926 				if (((((_la - 483)) & ~0x3f) == 0 && ((1L << (_la - 483)) & ((1L << (KB - 483)) | (1L << (MB - 483)) | (1L << (GB - 483)) | (1L << (TB - 483)))) != 0)) {
22927 					{
22928 					setState(3281);
22929 					_la = _input.LA(1);
22930 					if ( !(((((_la - 483)) & ~0x3f) == 0 && ((1L << (_la - 483)) & ((1L << (KB - 483)) | (1L << (MB - 483)) | (1L << (GB - 483)) | (1L << (TB - 483)))) != 0)) ) {
22931 					_errHandler.recoverInline(this);
22932 					}
22933 					else {
22934 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22935 						_errHandler.reportMatch(this);
22936 						consume();
22937 					}
22938 					}
22939 				}
22940 
22941 				}
22942 				break;
22943 			}
22944 			setState(3296);
22945 			_errHandler.sync(this);
22946 			switch ( getInterpreter().adaptivePredict(_input,306,_ctx) ) {
22947 			case 1:
22948 				{
22949 				setState(3286);
22950 				match(COMMA_);
22951 				setState(3287);
22952 				match(MAXSIZE);
22953 				setState(3288);
22954 				match(EQ_);
22955 				setState(3294);
22956 				_errHandler.sync(this);
22957 				switch (_input.LA(1)) {
22958 				case PLUS_:
22959 				case MINUS_:
22960 				case NUMBER_:
22961 					{
22962 					setState(3289);
22963 					numberLiterals();
22964 					setState(3291);
22965 					_errHandler.sync(this);
22966 					_la = _input.LA(1);
22967 					if (((((_la - 483)) & ~0x3f) == 0 && ((1L << (_la - 483)) & ((1L << (KB - 483)) | (1L << (MB - 483)) | (1L << (GB - 483)) | (1L << (TB - 483)))) != 0)) {
22968 						{
22969 						setState(3290);
22970 						_la = _input.LA(1);
22971 						if ( !(((((_la - 483)) & ~0x3f) == 0 && ((1L << (_la - 483)) & ((1L << (KB - 483)) | (1L << (MB - 483)) | (1L << (GB - 483)) | (1L << (TB - 483)))) != 0)) ) {
22972 						_errHandler.recoverInline(this);
22973 						}
22974 						else {
22975 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22976 							_errHandler.reportMatch(this);
22977 							consume();
22978 						}
22979 						}
22980 					}
22981 
22982 					}
22983 					break;
22984 				case UNLIMITED:
22985 					{
22986 					setState(3293);
22987 					match(UNLIMITED);
22988 					}
22989 					break;
22990 				default:
22991 					throw new NoViableAltException(this);
22992 				}
22993 				}
22994 				break;
22995 			}
22996 			setState(3305);
22997 			_errHandler.sync(this);
22998 			_la = _input.LA(1);
22999 			if (_la==COMMA_) {
23000 				{
23001 				setState(3298);
23002 				match(COMMA_);
23003 				setState(3299);
23004 				match(FILEGROWTH);
23005 				setState(3300);
23006 				match(EQ_);
23007 				setState(3301);
23008 				numberLiterals();
23009 				setState(3303);
23010 				_errHandler.sync(this);
23011 				_la = _input.LA(1);
23012 				if (_la==MOD_ || ((((_la - 483)) & ~0x3f) == 0 && ((1L << (_la - 483)) & ((1L << (KB - 483)) | (1L << (MB - 483)) | (1L << (GB - 483)) | (1L << (TB - 483)))) != 0)) {
23013 					{
23014 					setState(3302);
23015 					_la = _input.LA(1);
23016 					if ( !(_la==MOD_ || ((((_la - 483)) & ~0x3f) == 0 && ((1L << (_la - 483)) & ((1L << (KB - 483)) | (1L << (MB - 483)) | (1L << (GB - 483)) | (1L << (TB - 483)))) != 0)) ) {
23017 					_errHandler.recoverInline(this);
23018 					}
23019 					else {
23020 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23021 						_errHandler.reportMatch(this);
23022 						consume();
23023 					}
23024 					}
23025 				}
23026 
23027 				}
23028 			}
23029 
23030 			}
23031 		}
23032 		catch (RecognitionException re) {
23033 			_localctx.exception = re;
23034 			_errHandler.reportError(this, re);
23035 			_errHandler.recover(this, re);
23036 		}
23037 		finally {
23038 			exitRule();
23039 		}
23040 		return _localctx;
23041 	}
23042 
23043 	public static class DatabaseFileGroupContext extends ParserRuleContext {
23044 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
23045 		public IgnoredIdentifierContext ignoredIdentifier() {
23046 			return getRuleContext(IgnoredIdentifierContext.class,0);
23047 		}
23048 		public List<FileSpecContext> fileSpec() {
23049 			return getRuleContexts(FileSpecContext.class);
23050 		}
23051 		public FileSpecContext fileSpec(int i) {
23052 			return getRuleContext(FileSpecContext.class,i);
23053 		}
23054 		public DatabaseFileGroupContainsContext databaseFileGroupContains() {
23055 			return getRuleContext(DatabaseFileGroupContainsContext.class,0);
23056 		}
23057 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23058 		public TerminalNode COMMA_(int i) {
23059 			return getToken(SQLServerStatementParser.COMMA_, i);
23060 		}
23061 		public DatabaseFileGroupContext(ParserRuleContext parent, int invokingState) {
23062 			super(parent, invokingState);
23063 		}
23064 		@Override public int getRuleIndex() { return RULE_databaseFileGroup; }
23065 		@Override
23066 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23067 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileGroup(this);
23068 			else return visitor.visitChildren(this);
23069 		}
23070 	}
23071 
23072 	public final DatabaseFileGroupContext databaseFileGroup() throws RecognitionException {
23073 		DatabaseFileGroupContext _localctx = new DatabaseFileGroupContext(_ctx, getState());
23074 		enterRule(_localctx, 490, RULE_databaseFileGroup);
23075 		try {
23076 			int _alt;
23077 			enterOuterAlt(_localctx, 1);
23078 			{
23079 			setState(3307);
23080 			match(FILEGROUP);
23081 			setState(3308);
23082 			ignoredIdentifier();
23083 			setState(3310);
23084 			_errHandler.sync(this);
23085 			switch ( getInterpreter().adaptivePredict(_input,309,_ctx) ) {
23086 			case 1:
23087 				{
23088 				setState(3309);
23089 				databaseFileGroupContains();
23090 				}
23091 				break;
23092 			}
23093 			setState(3312);
23094 			fileSpec();
23095 			setState(3317);
23096 			_errHandler.sync(this);
23097 			_alt = getInterpreter().adaptivePredict(_input,310,_ctx);
23098 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
23099 				if ( _alt==1 ) {
23100 					{
23101 					{
23102 					setState(3313);
23103 					match(COMMA_);
23104 					setState(3314);
23105 					fileSpec();
23106 					}
23107 					} 
23108 				}
23109 				setState(3319);
23110 				_errHandler.sync(this);
23111 				_alt = getInterpreter().adaptivePredict(_input,310,_ctx);
23112 			}
23113 			}
23114 		}
23115 		catch (RecognitionException re) {
23116 			_localctx.exception = re;
23117 			_errHandler.reportError(this, re);
23118 			_errHandler.recover(this, re);
23119 		}
23120 		finally {
23121 			exitRule();
23122 		}
23123 		return _localctx;
23124 	}
23125 
23126 	public static class DatabaseFileGroupContainsContext extends ParserRuleContext {
23127 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
23128 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
23129 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
23130 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
23131 		public DatabaseFileGroupContainsContext(ParserRuleContext parent, int invokingState) {
23132 			super(parent, invokingState);
23133 		}
23134 		@Override public int getRuleIndex() { return RULE_databaseFileGroupContains; }
23135 		@Override
23136 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23137 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileGroupContains(this);
23138 			else return visitor.visitChildren(this);
23139 		}
23140 	}
23141 
23142 	public final DatabaseFileGroupContainsContext databaseFileGroupContains() throws RecognitionException {
23143 		DatabaseFileGroupContainsContext _localctx = new DatabaseFileGroupContainsContext(_ctx, getState());
23144 		enterRule(_localctx, 492, RULE_databaseFileGroupContains);
23145 		int _la;
23146 		try {
23147 			setState(3329);
23148 			_errHandler.sync(this);
23149 			switch ( getInterpreter().adaptivePredict(_input,313,_ctx) ) {
23150 			case 1:
23151 				enterOuterAlt(_localctx, 1);
23152 				{
23153 				setState(3322);
23154 				_errHandler.sync(this);
23155 				_la = _input.LA(1);
23156 				if (_la==CONTAINS) {
23157 					{
23158 					setState(3320);
23159 					match(CONTAINS);
23160 					setState(3321);
23161 					match(FILESTREAM);
23162 					}
23163 				}
23164 
23165 				setState(3325);
23166 				_errHandler.sync(this);
23167 				_la = _input.LA(1);
23168 				if (_la==DEFAULT) {
23169 					{
23170 					setState(3324);
23171 					match(DEFAULT);
23172 					}
23173 				}
23174 
23175 				}
23176 				break;
23177 			case 2:
23178 				enterOuterAlt(_localctx, 2);
23179 				{
23180 				setState(3327);
23181 				match(CONTAINS);
23182 				setState(3328);
23183 				match(MEMORY_OPTIMIZED_DATA);
23184 				}
23185 				break;
23186 			}
23187 		}
23188 		catch (RecognitionException re) {
23189 			_localctx.exception = re;
23190 			_errHandler.reportError(this, re);
23191 			_errHandler.recover(this, re);
23192 		}
23193 		finally {
23194 			exitRule();
23195 		}
23196 		return _localctx;
23197 	}
23198 
23199 	public static class DatabaseLogOnsContext extends ParserRuleContext {
23200 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
23201 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23202 		public List<FileSpecContext> fileSpec() {
23203 			return getRuleContexts(FileSpecContext.class);
23204 		}
23205 		public FileSpecContext fileSpec(int i) {
23206 			return getRuleContext(FileSpecContext.class,i);
23207 		}
23208 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23209 		public TerminalNode COMMA_(int i) {
23210 			return getToken(SQLServerStatementParser.COMMA_, i);
23211 		}
23212 		public DatabaseLogOnsContext(ParserRuleContext parent, int invokingState) {
23213 			super(parent, invokingState);
23214 		}
23215 		@Override public int getRuleIndex() { return RULE_databaseLogOns; }
23216 		@Override
23217 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23218 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseLogOns(this);
23219 			else return visitor.visitChildren(this);
23220 		}
23221 	}
23222 
23223 	public final DatabaseLogOnsContext databaseLogOns() throws RecognitionException {
23224 		DatabaseLogOnsContext _localctx = new DatabaseLogOnsContext(_ctx, getState());
23225 		enterRule(_localctx, 494, RULE_databaseLogOns);
23226 		int _la;
23227 		try {
23228 			enterOuterAlt(_localctx, 1);
23229 			{
23230 			setState(3341);
23231 			_errHandler.sync(this);
23232 			_la = _input.LA(1);
23233 			if (_la==LOG) {
23234 				{
23235 				setState(3331);
23236 				match(LOG);
23237 				setState(3332);
23238 				match(ON);
23239 				setState(3333);
23240 				fileSpec();
23241 				setState(3338);
23242 				_errHandler.sync(this);
23243 				_la = _input.LA(1);
23244 				while (_la==COMMA_) {
23245 					{
23246 					{
23247 					setState(3334);
23248 					match(COMMA_);
23249 					setState(3335);
23250 					fileSpec();
23251 					}
23252 					}
23253 					setState(3340);
23254 					_errHandler.sync(this);
23255 					_la = _input.LA(1);
23256 				}
23257 				}
23258 			}
23259 
23260 			}
23261 		}
23262 		catch (RecognitionException re) {
23263 			_localctx.exception = re;
23264 			_errHandler.reportError(this, re);
23265 			_errHandler.recover(this, re);
23266 		}
23267 		finally {
23268 			exitRule();
23269 		}
23270 		return _localctx;
23271 	}
23272 
23273 	public static class DeclareVariableContext extends ParserRuleContext {
23274 		public TerminalNode DECLARE() { return getToken(SQLServerStatementParser.DECLARE, 0); }
23275 		public List<VariableContext> variable() {
23276 			return getRuleContexts(VariableContext.class);
23277 		}
23278 		public VariableContext variable(int i) {
23279 			return getRuleContext(VariableContext.class,i);
23280 		}
23281 		public TableVariableContext tableVariable() {
23282 			return getRuleContext(TableVariableContext.class,0);
23283 		}
23284 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23285 		public TerminalNode COMMA_(int i) {
23286 			return getToken(SQLServerStatementParser.COMMA_, i);
23287 		}
23288 		public DeclareVariableContext(ParserRuleContext parent, int invokingState) {
23289 			super(parent, invokingState);
23290 		}
23291 		@Override public int getRuleIndex() { return RULE_declareVariable; }
23292 		@Override
23293 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23294 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDeclareVariable(this);
23295 			else return visitor.visitChildren(this);
23296 		}
23297 	}
23298 
23299 	public final DeclareVariableContext declareVariable() throws RecognitionException {
23300 		DeclareVariableContext _localctx = new DeclareVariableContext(_ctx, getState());
23301 		enterRule(_localctx, 496, RULE_declareVariable);
23302 		int _la;
23303 		try {
23304 			enterOuterAlt(_localctx, 1);
23305 			{
23306 			setState(3343);
23307 			match(DECLARE);
23308 			setState(3353);
23309 			_errHandler.sync(this);
23310 			switch ( getInterpreter().adaptivePredict(_input,317,_ctx) ) {
23311 			case 1:
23312 				{
23313 				setState(3344);
23314 				variable();
23315 				setState(3349);
23316 				_errHandler.sync(this);
23317 				_la = _input.LA(1);
23318 				while (_la==COMMA_) {
23319 					{
23320 					{
23321 					setState(3345);
23322 					match(COMMA_);
23323 					setState(3346);
23324 					variable();
23325 					}
23326 					}
23327 					setState(3351);
23328 					_errHandler.sync(this);
23329 					_la = _input.LA(1);
23330 				}
23331 				}
23332 				break;
23333 			case 2:
23334 				{
23335 				setState(3352);
23336 				tableVariable();
23337 				}
23338 				break;
23339 			}
23340 			}
23341 		}
23342 		catch (RecognitionException re) {
23343 			_localctx.exception = re;
23344 			_errHandler.reportError(this, re);
23345 			_errHandler.recover(this, re);
23346 		}
23347 		finally {
23348 			exitRule();
23349 		}
23350 		return _localctx;
23351 	}
23352 
23353 	public static class VariableContext extends ParserRuleContext {
23354 		public VariableNameContext variableName() {
23355 			return getRuleContext(VariableNameContext.class,0);
23356 		}
23357 		public DataTypeContext dataType() {
23358 			return getRuleContext(DataTypeContext.class,0);
23359 		}
23360 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
23361 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23362 		public SimpleExprContext simpleExpr() {
23363 			return getRuleContext(SimpleExprContext.class,0);
23364 		}
23365 		public TerminalNode CURSOR() { return getToken(SQLServerStatementParser.CURSOR, 0); }
23366 		public VariableContext(ParserRuleContext parent, int invokingState) {
23367 			super(parent, invokingState);
23368 		}
23369 		@Override public int getRuleIndex() { return RULE_variable; }
23370 		@Override
23371 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23372 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariable(this);
23373 			else return visitor.visitChildren(this);
23374 		}
23375 	}
23376 
23377 	public final VariableContext variable() throws RecognitionException {
23378 		VariableContext _localctx = new VariableContext(_ctx, getState());
23379 		enterRule(_localctx, 498, RULE_variable);
23380 		int _la;
23381 		try {
23382 			setState(3367);
23383 			_errHandler.sync(this);
23384 			switch ( getInterpreter().adaptivePredict(_input,320,_ctx) ) {
23385 			case 1:
23386 				enterOuterAlt(_localctx, 1);
23387 				{
23388 				setState(3355);
23389 				variableName();
23390 				setState(3357);
23391 				_errHandler.sync(this);
23392 				_la = _input.LA(1);
23393 				if (_la==AS) {
23394 					{
23395 					setState(3356);
23396 					match(AS);
23397 					}
23398 				}
23399 
23400 				setState(3359);
23401 				dataType();
23402 				setState(3362);
23403 				_errHandler.sync(this);
23404 				switch ( getInterpreter().adaptivePredict(_input,319,_ctx) ) {
23405 				case 1:
23406 					{
23407 					setState(3360);
23408 					match(EQ_);
23409 					setState(3361);
23410 					simpleExpr(0);
23411 					}
23412 					break;
23413 				}
23414 				}
23415 				break;
23416 			case 2:
23417 				enterOuterAlt(_localctx, 2);
23418 				{
23419 				setState(3364);
23420 				variableName();
23421 				setState(3365);
23422 				match(CURSOR);
23423 				}
23424 				break;
23425 			}
23426 		}
23427 		catch (RecognitionException re) {
23428 			_localctx.exception = re;
23429 			_errHandler.reportError(this, re);
23430 			_errHandler.recover(this, re);
23431 		}
23432 		finally {
23433 			exitRule();
23434 		}
23435 		return _localctx;
23436 	}
23437 
23438 	public static class TableVariableContext extends ParserRuleContext {
23439 		public VariableNameContext variableName() {
23440 			return getRuleContext(VariableNameContext.class,0);
23441 		}
23442 		public VariTableTypeDefinitionContext variTableTypeDefinition() {
23443 			return getRuleContext(VariTableTypeDefinitionContext.class,0);
23444 		}
23445 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
23446 		public TableVariableContext(ParserRuleContext parent, int invokingState) {
23447 			super(parent, invokingState);
23448 		}
23449 		@Override public int getRuleIndex() { return RULE_tableVariable; }
23450 		@Override
23451 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23452 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableVariable(this);
23453 			else return visitor.visitChildren(this);
23454 		}
23455 	}
23456 
23457 	public final TableVariableContext tableVariable() throws RecognitionException {
23458 		TableVariableContext _localctx = new TableVariableContext(_ctx, getState());
23459 		enterRule(_localctx, 500, RULE_tableVariable);
23460 		int _la;
23461 		try {
23462 			enterOuterAlt(_localctx, 1);
23463 			{
23464 			setState(3369);
23465 			variableName();
23466 			setState(3371);
23467 			_errHandler.sync(this);
23468 			_la = _input.LA(1);
23469 			if (_la==AS) {
23470 				{
23471 				setState(3370);
23472 				match(AS);
23473 				}
23474 			}
23475 
23476 			setState(3373);
23477 			variTableTypeDefinition();
23478 			}
23479 		}
23480 		catch (RecognitionException re) {
23481 			_localctx.exception = re;
23482 			_errHandler.reportError(this, re);
23483 			_errHandler.recover(this, re);
23484 		}
23485 		finally {
23486 			exitRule();
23487 		}
23488 		return _localctx;
23489 	}
23490 
23491 	public static class VariTableTypeDefinitionContext extends ParserRuleContext {
23492 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
23493 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23494 		public List<TableVariableClauseContext> tableVariableClause() {
23495 			return getRuleContexts(TableVariableClauseContext.class);
23496 		}
23497 		public TableVariableClauseContext tableVariableClause(int i) {
23498 			return getRuleContext(TableVariableClauseContext.class,i);
23499 		}
23500 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23501 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
23502 		public TerminalNode COMMA_(int i) {
23503 			return getToken(SQLServerStatementParser.COMMA_, i);
23504 		}
23505 		public VariTableTypeDefinitionContext(ParserRuleContext parent, int invokingState) {
23506 			super(parent, invokingState);
23507 		}
23508 		@Override public int getRuleIndex() { return RULE_variTableTypeDefinition; }
23509 		@Override
23510 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23511 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariTableTypeDefinition(this);
23512 			else return visitor.visitChildren(this);
23513 		}
23514 	}
23515 
23516 	public final VariTableTypeDefinitionContext variTableTypeDefinition() throws RecognitionException {
23517 		VariTableTypeDefinitionContext _localctx = new VariTableTypeDefinitionContext(_ctx, getState());
23518 		enterRule(_localctx, 502, RULE_variTableTypeDefinition);
23519 		int _la;
23520 		try {
23521 			enterOuterAlt(_localctx, 1);
23522 			{
23523 			setState(3375);
23524 			match(TABLE);
23525 			setState(3376);
23526 			match(LP_);
23527 			setState(3377);
23528 			tableVariableClause();
23529 			setState(3382);
23530 			_errHandler.sync(this);
23531 			_la = _input.LA(1);
23532 			while (_la==COMMA_) {
23533 				{
23534 				{
23535 				setState(3378);
23536 				match(COMMA_);
23537 				setState(3379);
23538 				tableVariableClause();
23539 				}
23540 				}
23541 				setState(3384);
23542 				_errHandler.sync(this);
23543 				_la = _input.LA(1);
23544 			}
23545 			setState(3385);
23546 			match(RP_);
23547 			}
23548 		}
23549 		catch (RecognitionException re) {
23550 			_localctx.exception = re;
23551 			_errHandler.reportError(this, re);
23552 			_errHandler.recover(this, re);
23553 		}
23554 		finally {
23555 			exitRule();
23556 		}
23557 		return _localctx;
23558 	}
23559 
23560 	public static class TableVariableClauseContext extends ParserRuleContext {
23561 		public VariableTableColumnDefinitionContext variableTableColumnDefinition() {
23562 			return getRuleContext(VariableTableColumnDefinitionContext.class,0);
23563 		}
23564 		public VariableTableConstraintContext variableTableConstraint() {
23565 			return getRuleContext(VariableTableConstraintContext.class,0);
23566 		}
23567 		public TableVariableClauseContext(ParserRuleContext parent, int invokingState) {
23568 			super(parent, invokingState);
23569 		}
23570 		@Override public int getRuleIndex() { return RULE_tableVariableClause; }
23571 		@Override
23572 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23573 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableVariableClause(this);
23574 			else return visitor.visitChildren(this);
23575 		}
23576 	}
23577 
23578 	public final TableVariableClauseContext tableVariableClause() throws RecognitionException {
23579 		TableVariableClauseContext _localctx = new TableVariableClauseContext(_ctx, getState());
23580 		enterRule(_localctx, 504, RULE_tableVariableClause);
23581 		try {
23582 			setState(3389);
23583 			_errHandler.sync(this);
23584 			switch (_input.LA(1)) {
23585 			case DOLLAR_:
23586 			case TRUNCATE:
23587 			case SCHEMA:
23588 			case FUNCTION:
23589 			case TRIGGER:
23590 			case CAST:
23591 			case GROUP:
23592 			case LIMIT:
23593 			case OFFSET:
23594 			case SAVEPOINT:
23595 			case BOOLEAN:
23596 			case ARRAY:
23597 			case DATE:
23598 			case LOCALTIME:
23599 			case LOCALTIMESTAMP:
23600 			case QUARTER:
23601 			case WEEK:
23602 			case DAY:
23603 			case MICROSECOND:
23604 			case MAX:
23605 			case MIN:
23606 			case SUM:
23607 			case COUNT:
23608 			case AVG:
23609 			case ENABLE:
23610 			case DISABLE:
23611 			case INSTANCE:
23612 			case DO:
23613 			case DEFINER:
23614 			case SQL:
23615 			case CASCADED:
23616 			case LOCAL:
23617 			case NEXT:
23618 			case NAME:
23619 			case INTEGER:
23620 			case TYPE:
23621 			case READ_ONLY:
23622 			case DATABASE:
23623 			case DATEPART:
23624 			case PASSWORD:
23625 			case BINARY:
23626 			case HIDDEN_:
23627 			case MOD:
23628 			case PARTITION:
23629 			case PARTITIONS:
23630 			case TOP:
23631 			case ROW:
23632 			case ROWS:
23633 			case XOR:
23634 			case ALWAYS:
23635 			case ROLE:
23636 			case START:
23637 			case ALGORITHM:
23638 			case AUTO:
23639 			case BLOCKERS:
23640 			case CLUSTERED:
23641 			case NONCLUSTERED:
23642 			case COLUMNSTORE:
23643 			case CONTENT:
23644 			case YEARS:
23645 			case MONTHS:
23646 			case WEEKS:
23647 			case DAYS:
23648 			case MINUTES:
23649 			case DENY:
23650 			case DETERMINISTIC:
23651 			case DISTRIBUTION:
23652 			case DOCUMENT:
23653 			case DURABILITY:
23654 			case ENCRYPTED:
23655 			case FILESTREAM:
23656 			case FILETABLE:
23657 			case FILLFACTOR:
23658 			case FOLLOWING:
23659 			case HASH:
23660 			case HEAP:
23661 			case INBOUND:
23662 			case OUTBOUND:
23663 			case UNBOUNDED:
23664 			case INFINITE:
23665 			case LOGIN:
23666 			case MASKED:
23667 			case MAXDOP:
23668 			case MOVE:
23669 			case NOCHECK:
23670 			case OBJECT:
23671 			case OFF:
23672 			case ONLINE:
23673 			case OVER:
23674 			case PAGE:
23675 			case PAUSED:
23676 			case PERIOD:
23677 			case PERSISTED:
23678 			case PRECEDING:
23679 			case RANDOMIZED:
23680 			case RANGE:
23681 			case REBUILD:
23682 			case REPLICATE:
23683 			case REPLICATION:
23684 			case RESUMABLE:
23685 			case ROWGUIDCOL:
23686 			case SAVE:
23687 			case SELF:
23688 			case SPARSE:
23689 			case SWITCH:
23690 			case TRAN:
23691 			case TRANCOUNT:
23692 			case CONTROL:
23693 			case CONCAT:
23694 			case TAKE:
23695 			case OWNERSHIP:
23696 			case DEFINITION:
23697 			case APPLICATION:
23698 			case ASSEMBLY:
23699 			case SYMMETRIC:
23700 			case ASYMMETRIC:
23701 			case SERVER:
23702 			case RECEIVE:
23703 			case CHANGE:
23704 			case TRACE:
23705 			case TRACKING:
23706 			case RESOURCES:
23707 			case SETTINGS:
23708 			case STATE:
23709 			case AVAILABILITY:
23710 			case CREDENTIAL:
23711 			case ENDPOINT:
23712 			case EVENT:
23713 			case NOTIFICATION:
23714 			case LINKED:
23715 			case AUDIT:
23716 			case DDL:
23717 			case XML:
23718 			case IMPERSONATE:
23719 			case SECURABLES:
23720 			case AUTHENTICATE:
23721 			case EXTERNAL:
23722 			case ACCESS:
23723 			case ADMINISTER:
23724 			case BULK:
23725 			case OPERATIONS:
23726 			case UNSAFE:
23727 			case SHUTDOWN:
23728 			case SCOPED:
23729 			case CONFIGURATION:
23730 			case DATASPACE:
23731 			case SERVICE:
23732 			case CERTIFICATE:
23733 			case CONTRACT:
23734 			case ENCRYPTION:
23735 			case MASTER:
23736 			case DATA:
23737 			case SOURCE:
23738 			case FILE:
23739 			case FORMAT:
23740 			case LIBRARY:
23741 			case FULLTEXT:
23742 			case MASK:
23743 			case UNMASK:
23744 			case MESSAGE:
23745 			case REMOTE:
23746 			case BINDING:
23747 			case ROUTE:
23748 			case SECURITY:
23749 			case POLICY:
23750 			case AGGREGATE:
23751 			case QUEUE:
23752 			case RULE:
23753 			case SYNONYM:
23754 			case COLLECTION:
23755 			case SCRIPT:
23756 			case KILL:
23757 			case BACKUP:
23758 			case LOG:
23759 			case SHOWPLAN:
23760 			case SUBSCRIBE:
23761 			case QUERY:
23762 			case NOTIFICATIONS:
23763 			case CHECKPOINT:
23764 			case SEQUENCE:
23765 			case ABORT_AFTER_WAIT:
23766 			case ALLOW_PAGE_LOCKS:
23767 			case ALLOW_ROW_LOCKS:
23768 			case ALL_SPARSE_COLUMNS:
23769 			case BUCKET_COUNT:
23770 			case COLUMNSTORE_ARCHIVE:
23771 			case COLUMN_ENCRYPTION_KEY:
23772 			case COLUMN_SET:
23773 			case COMPRESSION_DELAY:
23774 			case DATABASE_DEAULT:
23775 			case DATA_COMPRESSION:
23776 			case DATA_CONSISTENCY_CHECK:
23777 			case ENCRYPTION_TYPE:
23778 			case SYSTEM_TIME:
23779 			case SYSTEM_VERSIONING:
23780 			case TEXTIMAGE_ON:
23781 			case WAIT_AT_LOW_PRIORITY:
23782 			case STATISTICS_INCREMENTAL:
23783 			case STATISTICS_NORECOMPUTE:
23784 			case ROUND_ROBIN:
23785 			case SCHEMA_AND_DATA:
23786 			case SCHEMA_ONLY:
23787 			case SORT_IN_TEMPDB:
23788 			case IGNORE_DUP_KEY:
23789 			case IMPLICIT_TRANSACTIONS:
23790 			case MAX_DURATION:
23791 			case MEMORY_OPTIMIZED:
23792 			case MIGRATION_STATE:
23793 			case PAD_INDEX:
23794 			case REMOTE_DATA_ARCHIVE:
23795 			case FILESTREAM_ON:
23796 			case FILETABLE_COLLATE_FILENAME:
23797 			case FILETABLE_DIRECTORY:
23798 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
23799 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
23800 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
23801 			case FILTER_PREDICATE:
23802 			case HISTORY_RETENTION_PERIOD:
23803 			case HISTORY_TABLE:
23804 			case LOCK_ESCALATION:
23805 			case DROP_EXISTING:
23806 			case ROW_NUMBER:
23807 			case FIRST:
23808 			case DATETIME2:
23809 			case OUTPUT:
23810 			case INSERTED:
23811 			case DELETED:
23812 			case FILENAME:
23813 			case MAXSIZE:
23814 			case FILEGROWTH:
23815 			case UNLIMITED:
23816 			case KB:
23817 			case MB:
23818 			case GB:
23819 			case TB:
23820 			case MEMORY_OPTIMIZED_DATA:
23821 			case FILEGROUP:
23822 			case NON_TRANSACTED_ACCESS:
23823 			case DB_CHAINING:
23824 			case TRUSTWORTHY:
23825 			case FORWARD_ONLY:
23826 			case KEYSET:
23827 			case FAST_FORWARD:
23828 			case SCROLL_LOCKS:
23829 			case OPTIMISTIC:
23830 			case TYPE_WARNING:
23831 			case SCHEMABINDING:
23832 			case CALLER:
23833 			case OWNER:
23834 			case SNAPSHOT:
23835 			case REPEATABLE:
23836 			case SERIALIZABLE:
23837 			case NATIVE_COMPILATION:
23838 			case VIEW_METADATA:
23839 			case INSTEAD:
23840 			case APPEND:
23841 			case INCREMENT:
23842 			case CACHE:
23843 			case MINVALUE:
23844 			case MAXVALUE:
23845 			case RESTART:
23846 			case LOB_COMPACTION:
23847 			case COMPRESS_ALL_ROW_GROUPS:
23848 			case REORGANIZE:
23849 			case RESUME:
23850 			case PAUSE:
23851 			case ABORT:
23852 			case ACCELERATED_DATABASE_RECOVERY:
23853 			case PERSISTENT_VERSION_STORE_FILEGROUP:
23854 			case IMMEDIATE:
23855 			case NO_WAIT:
23856 			case TARGET_RECOVERY_TIME:
23857 			case SECONDS:
23858 			case HONOR_BROKER_PRIORITY:
23859 			case ERROR_BROKER_CONVERSATIONS:
23860 			case NEW_BROKER:
23861 			case DISABLE_BROKER:
23862 			case ENABLE_BROKER:
23863 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
23864 			case READ_COMMITTED_SNAPSHOT:
23865 			case ALLOW_SNAPSHOT_ISOLATION:
23866 			case RECURSIVE_TRIGGERS:
23867 			case QUOTED_IDENTIFIER:
23868 			case NUMERIC_ROUNDABORT:
23869 			case CONCAT_NULL_YIELDS_NULL:
23870 			case COMPATIBILITY_LEVEL:
23871 			case ARITHABORT:
23872 			case ANSI_WARNINGS:
23873 			case ANSI_PADDING:
23874 			case ANSI_NULLS:
23875 			case ANSI_NULL_DEFAULT:
23876 			case PAGE_VERIFY:
23877 			case CHECKSUM:
23878 			case TORN_PAGE_DETECTION:
23879 			case BULK_LOGGED:
23880 			case RECOVERY:
23881 			case TOTAL_EXECUTION_CPU_TIME_MS:
23882 			case TOTAL_COMPILE_CPU_TIME_MS:
23883 			case STALE_CAPTURE_POLICY_THRESHOLD:
23884 			case EXECUTION_COUNT:
23885 			case QUERY_CAPTURE_POLICY:
23886 			case WAIT_STATS_CAPTURE_MODE:
23887 			case MAX_PLANS_PER_QUERY:
23888 			case QUERY_CAPTURE_MODE:
23889 			case SIZE_BASED_CLEANUP_MODE:
23890 			case INTERVAL_LENGTH_MINUTES:
23891 			case MAX_STORAGE_SIZE_MB:
23892 			case DATA_FLUSH_INTERVAL_SECONDS:
23893 			case CLEANUP_POLICY:
23894 			case CUSTOM:
23895 			case STALE_QUERY_THRESHOLD_DAYS:
23896 			case OPERATION_MODE:
23897 			case QUERY_STORE:
23898 			case CURSOR_DEFAULT:
23899 			case GLOBAL:
23900 			case CURSOR_CLOSE_ON_COMMIT:
23901 			case HOURS:
23902 			case CHANGE_RETENTION:
23903 			case AUTO_CLEANUP:
23904 			case CHANGE_TRACKING:
23905 			case AUTOMATIC_TUNING:
23906 			case FORCE_LAST_GOOD_PLAN:
23907 			case AUTO_UPDATE_STATISTICS_ASYNC:
23908 			case AUTO_UPDATE_STATISTICS:
23909 			case AUTO_SHRINK:
23910 			case AUTO_CREATE_STATISTICS:
23911 			case INCREMENTAL:
23912 			case AUTO_CLOSE:
23913 			case DATA_RETENTION:
23914 			case TEMPORAL_HISTORY_RETENTION:
23915 			case EDITION:
23916 			case MIXED_PAGE_ALLOCATION:
23917 			case DISABLED:
23918 			case ALLOWED:
23919 			case HADR:
23920 			case MULTI_USER:
23921 			case RESTRICTED_USER:
23922 			case SINGLE_USER:
23923 			case OFFLINE:
23924 			case EMERGENCY:
23925 			case SUSPEND:
23926 			case DATE_CORRELATION_OPTIMIZATION:
23927 			case ELASTIC_POOL:
23928 			case SERVICE_OBJECTIVE:
23929 			case DATABASE_NAME:
23930 			case ALLOW_CONNECTIONS:
23931 			case GEO:
23932 			case NAMED:
23933 			case DATEFIRST:
23934 			case BACKUP_STORAGE_REDUNDANCY:
23935 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
23936 			case SECONDARY:
23937 			case FAILOVER:
23938 			case DEFAULT_FULLTEXT_LANGUAGE:
23939 			case DEFAULT_LANGUAGE:
23940 			case INLINE:
23941 			case NESTED_TRIGGERS:
23942 			case TRANSFORM_NOISE_WORDS:
23943 			case TWO_DIGIT_YEAR_CUTOFF:
23944 			case PERSISTENT_LOG_BUFFER:
23945 			case DIRECTORY_NAME:
23946 			case DATEFORMAT:
23947 			case DELAYED_DURABILITY:
23948 			case AUTHORIZATION:
23949 			case TRANSFER:
23950 			case SEARCH:
23951 			case MEMBER:
23952 			case IDENTIFIER_:
23953 			case DELIMITED_IDENTIFIER_:
23954 				enterOuterAlt(_localctx, 1);
23955 				{
23956 				setState(3387);
23957 				variableTableColumnDefinition();
23958 				}
23959 				break;
23960 			case PRIMARY:
23961 			case UNIQUE:
23962 			case CHECK:
23963 				enterOuterAlt(_localctx, 2);
23964 				{
23965 				setState(3388);
23966 				variableTableConstraint();
23967 				}
23968 				break;
23969 			default:
23970 				throw new NoViableAltException(this);
23971 			}
23972 		}
23973 		catch (RecognitionException re) {
23974 			_localctx.exception = re;
23975 			_errHandler.reportError(this, re);
23976 			_errHandler.recover(this, re);
23977 		}
23978 		finally {
23979 			exitRule();
23980 		}
23981 		return _localctx;
23982 	}
23983 
23984 	public static class VariableTableColumnDefinitionContext extends ParserRuleContext {
23985 		public ColumnNameContext columnName() {
23986 			return getRuleContext(ColumnNameContext.class,0);
23987 		}
23988 		public VariableTableColumnConstraintContext variableTableColumnConstraint() {
23989 			return getRuleContext(VariableTableColumnConstraintContext.class,0);
23990 		}
23991 		public DataTypeNameContext dataTypeName() {
23992 			return getRuleContext(DataTypeNameContext.class,0);
23993 		}
23994 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
23995 		public List<ExprContext> expr() {
23996 			return getRuleContexts(ExprContext.class);
23997 		}
23998 		public ExprContext expr(int i) {
23999 			return getRuleContext(ExprContext.class,i);
24000 		}
24001 		public TerminalNode IDENTITY() { return getToken(SQLServerStatementParser.IDENTITY, 0); }
24002 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
24003 		public CollationNameContext collationName() {
24004 			return getRuleContext(CollationNameContext.class,0);
24005 		}
24006 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
24007 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
24008 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24009 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
24010 		public TerminalNode NUMBER_(int i) {
24011 			return getToken(SQLServerStatementParser.NUMBER_, i);
24012 		}
24013 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
24014 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24015 		public VariableTableColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
24016 			super(parent, invokingState);
24017 		}
24018 		@Override public int getRuleIndex() { return RULE_variableTableColumnDefinition; }
24019 		@Override
24020 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24021 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableColumnDefinition(this);
24022 			else return visitor.visitChildren(this);
24023 		}
24024 	}
24025 
24026 	public final VariableTableColumnDefinitionContext variableTableColumnDefinition() throws RecognitionException {
24027 		VariableTableColumnDefinitionContext _localctx = new VariableTableColumnDefinitionContext(_ctx, getState());
24028 		enterRule(_localctx, 506, RULE_variableTableColumnDefinition);
24029 		int _la;
24030 		try {
24031 			enterOuterAlt(_localctx, 1);
24032 			{
24033 			setState(3391);
24034 			columnName();
24035 			setState(3395);
24036 			_errHandler.sync(this);
24037 			switch (_input.LA(1)) {
24038 			case CHAR:
24039 			case DATE:
24040 			case TIME:
24041 			case INTEGER:
24042 			case REAL:
24043 			case DECIMAL:
24044 			case BIT:
24045 			case SMALLINT:
24046 			case INT:
24047 			case TINYINT:
24048 			case NUMERIC:
24049 			case FLOAT:
24050 			case BIGINT:
24051 			case TEXT:
24052 			case VARCHAR:
24053 			case BINARY:
24054 			case XML:
24055 			case MONEY:
24056 			case SMALLMONEY:
24057 			case DATETIMEOFFSET:
24058 			case DATETIME:
24059 			case DATETIME2:
24060 			case SMALLDATETIME:
24061 			case NCHAR:
24062 			case NVARCHAR:
24063 			case NTEXT:
24064 			case VARBINARY:
24065 			case IMAGE:
24066 			case SQL_VARIANT:
24067 			case UNIQUEIDENTIFIER:
24068 			case HIERARCHYID:
24069 			case GEOMETRY:
24070 			case GEOGRAPHY:
24071 			case IDENTIFIER_:
24072 				{
24073 				setState(3392);
24074 				dataTypeName();
24075 				}
24076 				break;
24077 			case AS:
24078 				{
24079 				setState(3393);
24080 				match(AS);
24081 				setState(3394);
24082 				expr(0);
24083 				}
24084 				break;
24085 			default:
24086 				throw new NoViableAltException(this);
24087 			}
24088 			setState(3399);
24089 			_errHandler.sync(this);
24090 			_la = _input.LA(1);
24091 			if (_la==COLLATE) {
24092 				{
24093 				setState(3397);
24094 				match(COLLATE);
24095 				setState(3398);
24096 				collationName();
24097 				}
24098 			}
24099 
24100 			setState(3413);
24101 			_errHandler.sync(this);
24102 			switch (_input.LA(1)) {
24103 			case RP_:
24104 			case COMMA_:
24105 			case PRIMARY:
24106 			case UNIQUE:
24107 			case WITH:
24108 			case NOT:
24109 			case NULL:
24110 			case DEFAULT:
24111 			case CHECK:
24112 			case ROWGUIDCOL:
24113 				{
24114 				setState(3403);
24115 				_errHandler.sync(this);
24116 				_la = _input.LA(1);
24117 				if (_la==DEFAULT) {
24118 					{
24119 					setState(3401);
24120 					match(DEFAULT);
24121 					setState(3402);
24122 					expr(0);
24123 					}
24124 				}
24125 
24126 				}
24127 				break;
24128 			case IDENTITY:
24129 				{
24130 				setState(3405);
24131 				match(IDENTITY);
24132 				setState(3411);
24133 				_errHandler.sync(this);
24134 				_la = _input.LA(1);
24135 				if (_la==LP_) {
24136 					{
24137 					setState(3406);
24138 					match(LP_);
24139 					setState(3407);
24140 					match(NUMBER_);
24141 					setState(3408);
24142 					match(COMMA_);
24143 					setState(3409);
24144 					match(NUMBER_);
24145 					setState(3410);
24146 					match(RP_);
24147 					}
24148 				}
24149 
24150 				}
24151 				break;
24152 			default:
24153 				throw new NoViableAltException(this);
24154 			}
24155 			setState(3416);
24156 			_errHandler.sync(this);
24157 			_la = _input.LA(1);
24158 			if (_la==ROWGUIDCOL) {
24159 				{
24160 				setState(3415);
24161 				match(ROWGUIDCOL);
24162 				}
24163 			}
24164 
24165 			setState(3418);
24166 			variableTableColumnConstraint();
24167 			}
24168 		}
24169 		catch (RecognitionException re) {
24170 			_localctx.exception = re;
24171 			_errHandler.reportError(this, re);
24172 			_errHandler.recover(this, re);
24173 		}
24174 		finally {
24175 			exitRule();
24176 		}
24177 		return _localctx;
24178 	}
24179 
24180 	public static class VariableTableColumnConstraintContext extends ParserRuleContext {
24181 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
24182 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
24183 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
24184 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
24185 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
24186 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
24187 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24188 		public ExprContext expr() {
24189 			return getRuleContext(ExprContext.class,0);
24190 		}
24191 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24192 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
24193 		public IndexOptionContext indexOption() {
24194 			return getRuleContext(IndexOptionContext.class,0);
24195 		}
24196 		public VariableTableColumnConstraintContext(ParserRuleContext parent, int invokingState) {
24197 			super(parent, invokingState);
24198 		}
24199 		@Override public int getRuleIndex() { return RULE_variableTableColumnConstraint; }
24200 		@Override
24201 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24202 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableColumnConstraint(this);
24203 			else return visitor.visitChildren(this);
24204 		}
24205 	}
24206 
24207 	public final VariableTableColumnConstraintContext variableTableColumnConstraint() throws RecognitionException {
24208 		VariableTableColumnConstraintContext _localctx = new VariableTableColumnConstraintContext(_ctx, getState());
24209 		enterRule(_localctx, 508, RULE_variableTableColumnConstraint);
24210 		try {
24211 			setState(3437);
24212 			_errHandler.sync(this);
24213 			switch ( getInterpreter().adaptivePredict(_input,332,_ctx) ) {
24214 			case 1:
24215 				enterOuterAlt(_localctx, 1);
24216 				{
24217 				setState(3423);
24218 				_errHandler.sync(this);
24219 				switch (_input.LA(1)) {
24220 				case NULL:
24221 					{
24222 					setState(3420);
24223 					match(NULL);
24224 					}
24225 					break;
24226 				case NOT:
24227 					{
24228 					setState(3421);
24229 					match(NOT);
24230 					setState(3422);
24231 					match(NULL);
24232 					}
24233 					break;
24234 				case RP_:
24235 				case COMMA_:
24236 					break;
24237 				default:
24238 					break;
24239 				}
24240 				}
24241 				break;
24242 			case 2:
24243 				enterOuterAlt(_localctx, 2);
24244 				{
24245 				setState(3428);
24246 				_errHandler.sync(this);
24247 				switch (_input.LA(1)) {
24248 				case PRIMARY:
24249 					{
24250 					setState(3425);
24251 					match(PRIMARY);
24252 					setState(3426);
24253 					match(KEY);
24254 					}
24255 					break;
24256 				case UNIQUE:
24257 					{
24258 					setState(3427);
24259 					match(UNIQUE);
24260 					}
24261 					break;
24262 				case RP_:
24263 				case COMMA_:
24264 					break;
24265 				default:
24266 					break;
24267 				}
24268 				}
24269 				break;
24270 			case 3:
24271 				enterOuterAlt(_localctx, 3);
24272 				{
24273 				setState(3430);
24274 				match(CHECK);
24275 				setState(3431);
24276 				match(LP_);
24277 				setState(3432);
24278 				expr(0);
24279 				setState(3433);
24280 				match(RP_);
24281 				}
24282 				break;
24283 			case 4:
24284 				enterOuterAlt(_localctx, 4);
24285 				{
24286 				setState(3435);
24287 				match(WITH);
24288 				setState(3436);
24289 				indexOption();
24290 				}
24291 				break;
24292 			}
24293 		}
24294 		catch (RecognitionException re) {
24295 			_localctx.exception = re;
24296 			_errHandler.reportError(this, re);
24297 			_errHandler.recover(this, re);
24298 		}
24299 		finally {
24300 			exitRule();
24301 		}
24302 		return _localctx;
24303 	}
24304 
24305 	public static class VariableTableConstraintContext extends ParserRuleContext {
24306 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24307 		public List<ColumnNameContext> columnName() {
24308 			return getRuleContexts(ColumnNameContext.class);
24309 		}
24310 		public ColumnNameContext columnName(int i) {
24311 			return getRuleContext(ColumnNameContext.class,i);
24312 		}
24313 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24314 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
24315 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
24316 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
24317 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24318 		public TerminalNode COMMA_(int i) {
24319 			return getToken(SQLServerStatementParser.COMMA_, i);
24320 		}
24321 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
24322 		public ExprContext expr() {
24323 			return getRuleContext(ExprContext.class,0);
24324 		}
24325 		public VariableTableConstraintContext(ParserRuleContext parent, int invokingState) {
24326 			super(parent, invokingState);
24327 		}
24328 		@Override public int getRuleIndex() { return RULE_variableTableConstraint; }
24329 		@Override
24330 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24331 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableConstraint(this);
24332 			else return visitor.visitChildren(this);
24333 		}
24334 	}
24335 
24336 	public final VariableTableConstraintContext variableTableConstraint() throws RecognitionException {
24337 		VariableTableConstraintContext _localctx = new VariableTableConstraintContext(_ctx, getState());
24338 		enterRule(_localctx, 510, RULE_variableTableConstraint);
24339 		int _la;
24340 		try {
24341 			setState(3457);
24342 			_errHandler.sync(this);
24343 			switch (_input.LA(1)) {
24344 			case PRIMARY:
24345 			case UNIQUE:
24346 				enterOuterAlt(_localctx, 1);
24347 				{
24348 				setState(3442);
24349 				_errHandler.sync(this);
24350 				switch (_input.LA(1)) {
24351 				case PRIMARY:
24352 					{
24353 					setState(3439);
24354 					match(PRIMARY);
24355 					setState(3440);
24356 					match(KEY);
24357 					}
24358 					break;
24359 				case UNIQUE:
24360 					{
24361 					setState(3441);
24362 					match(UNIQUE);
24363 					}
24364 					break;
24365 				default:
24366 					throw new NoViableAltException(this);
24367 				}
24368 				setState(3444);
24369 				match(LP_);
24370 				setState(3445);
24371 				columnName();
24372 				setState(3450);
24373 				_errHandler.sync(this);
24374 				_la = _input.LA(1);
24375 				while (_la==COMMA_) {
24376 					{
24377 					{
24378 					setState(3446);
24379 					match(COMMA_);
24380 					setState(3447);
24381 					columnName();
24382 					}
24383 					}
24384 					setState(3452);
24385 					_errHandler.sync(this);
24386 					_la = _input.LA(1);
24387 				}
24388 				setState(3453);
24389 				match(RP_);
24390 				}
24391 				break;
24392 			case CHECK:
24393 				enterOuterAlt(_localctx, 2);
24394 				{
24395 				setState(3455);
24396 				match(CHECK);
24397 				setState(3456);
24398 				expr(0);
24399 				}
24400 				break;
24401 			default:
24402 				throw new NoViableAltException(this);
24403 			}
24404 		}
24405 		catch (RecognitionException re) {
24406 			_localctx.exception = re;
24407 			_errHandler.reportError(this, re);
24408 			_errHandler.recover(this, re);
24409 		}
24410 		finally {
24411 			exitRule();
24412 		}
24413 		return _localctx;
24414 	}
24415 
24416 	public static class SetVariableContext extends ParserRuleContext {
24417 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
24418 		public VariableNameContext variableName() {
24419 			return getRuleContext(VariableNameContext.class,0);
24420 		}
24421 		public SetVariableClauseContext setVariableClause() {
24422 			return getRuleContext(SetVariableClauseContext.class,0);
24423 		}
24424 		public SetVariableContext(ParserRuleContext parent, int invokingState) {
24425 			super(parent, invokingState);
24426 		}
24427 		@Override public int getRuleIndex() { return RULE_setVariable; }
24428 		@Override
24429 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24430 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetVariable(this);
24431 			else return visitor.visitChildren(this);
24432 		}
24433 	}
24434 
24435 	public final SetVariableContext setVariable() throws RecognitionException {
24436 		SetVariableContext _localctx = new SetVariableContext(_ctx, getState());
24437 		enterRule(_localctx, 512, RULE_setVariable);
24438 		try {
24439 			enterOuterAlt(_localctx, 1);
24440 			{
24441 			setState(3459);
24442 			match(SET);
24443 			setState(3460);
24444 			variableName();
24445 			setState(3461);
24446 			setVariableClause();
24447 			}
24448 		}
24449 		catch (RecognitionException re) {
24450 			_localctx.exception = re;
24451 			_errHandler.reportError(this, re);
24452 			_errHandler.recover(this, re);
24453 		}
24454 		finally {
24455 			exitRule();
24456 		}
24457 		return _localctx;
24458 	}
24459 
24460 	public static class SetVariableClauseContext extends ParserRuleContext {
24461 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
24462 		public ExprContext expr() {
24463 			return getRuleContext(ExprContext.class,0);
24464 		}
24465 		public List<IdentifierContext> identifier() {
24466 			return getRuleContexts(IdentifierContext.class);
24467 		}
24468 		public IdentifierContext identifier(int i) {
24469 			return getRuleContext(IdentifierContext.class,i);
24470 		}
24471 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
24472 		public TerminalNode DOT_(int i) {
24473 			return getToken(SQLServerStatementParser.DOT_, i);
24474 		}
24475 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
24476 		public CompoundOperationContext compoundOperation() {
24477 			return getRuleContext(CompoundOperationContext.class,0);
24478 		}
24479 		public CursorVariableContext cursorVariable() {
24480 			return getRuleContext(CursorVariableContext.class,0);
24481 		}
24482 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24483 		public SelectContext select() {
24484 			return getRuleContext(SelectContext.class,0);
24485 		}
24486 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24487 		public SetVariableClauseContext(ParserRuleContext parent, int invokingState) {
24488 			super(parent, invokingState);
24489 		}
24490 		@Override public int getRuleIndex() { return RULE_setVariableClause; }
24491 		@Override
24492 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24493 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetVariableClause(this);
24494 			else return visitor.visitChildren(this);
24495 		}
24496 	}
24497 
24498 	public final SetVariableClauseContext setVariableClause() throws RecognitionException {
24499 		SetVariableClauseContext _localctx = new SetVariableClauseContext(_ctx, getState());
24500 		enterRule(_localctx, 514, RULE_setVariableClause);
24501 		int _la;
24502 		try {
24503 			setState(3486);
24504 			_errHandler.sync(this);
24505 			switch ( getInterpreter().adaptivePredict(_input,338,_ctx) ) {
24506 			case 1:
24507 				enterOuterAlt(_localctx, 1);
24508 				{
24509 				setState(3465);
24510 				_errHandler.sync(this);
24511 				_la = _input.LA(1);
24512 				if (_la==DOT_) {
24513 					{
24514 					setState(3463);
24515 					match(DOT_);
24516 					setState(3464);
24517 					identifier();
24518 					}
24519 				}
24520 
24521 				setState(3467);
24522 				match(EQ_);
24523 				setState(3474);
24524 				_errHandler.sync(this);
24525 				switch ( getInterpreter().adaptivePredict(_input,337,_ctx) ) {
24526 				case 1:
24527 					{
24528 					setState(3468);
24529 					expr(0);
24530 					}
24531 					break;
24532 				case 2:
24533 					{
24534 					setState(3469);
24535 					identifier();
24536 					setState(3470);
24537 					match(DOT_);
24538 					setState(3471);
24539 					identifier();
24540 					}
24541 					break;
24542 				case 3:
24543 					{
24544 					setState(3473);
24545 					match(NCHAR_TEXT);
24546 					}
24547 					break;
24548 				}
24549 				}
24550 				break;
24551 			case 2:
24552 				enterOuterAlt(_localctx, 2);
24553 				{
24554 				setState(3476);
24555 				compoundOperation();
24556 				setState(3477);
24557 				expr(0);
24558 				}
24559 				break;
24560 			case 3:
24561 				enterOuterAlt(_localctx, 3);
24562 				{
24563 				setState(3479);
24564 				match(EQ_);
24565 				setState(3480);
24566 				cursorVariable();
24567 				}
24568 				break;
24569 			case 4:
24570 				enterOuterAlt(_localctx, 4);
24571 				{
24572 				setState(3481);
24573 				match(EQ_);
24574 				setState(3482);
24575 				match(LP_);
24576 				setState(3483);
24577 				select();
24578 				setState(3484);
24579 				match(RP_);
24580 				}
24581 				break;
24582 			}
24583 		}
24584 		catch (RecognitionException re) {
24585 			_localctx.exception = re;
24586 			_errHandler.reportError(this, re);
24587 			_errHandler.recover(this, re);
24588 		}
24589 		finally {
24590 			exitRule();
24591 		}
24592 		return _localctx;
24593 	}
24594 
24595 	public static class CursorVariableContext extends ParserRuleContext {
24596 		public VariableNameContext variableName() {
24597 			return getRuleContext(VariableNameContext.class,0);
24598 		}
24599 		public TerminalNode CURSOR() { return getToken(SQLServerStatementParser.CURSOR, 0); }
24600 		public CursorClauseContext cursorClause() {
24601 			return getRuleContext(CursorClauseContext.class,0);
24602 		}
24603 		public List<TerminalNode> FOR() { return getTokens(SQLServerStatementParser.FOR); }
24604 		public TerminalNode FOR(int i) {
24605 			return getToken(SQLServerStatementParser.FOR, i);
24606 		}
24607 		public SelectContext select() {
24608 			return getRuleContext(SelectContext.class,0);
24609 		}
24610 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
24611 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
24612 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
24613 		public List<NameContext> name() {
24614 			return getRuleContexts(NameContext.class);
24615 		}
24616 		public NameContext name(int i) {
24617 			return getRuleContext(NameContext.class,i);
24618 		}
24619 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24620 		public TerminalNode COMMA_(int i) {
24621 			return getToken(SQLServerStatementParser.COMMA_, i);
24622 		}
24623 		public CursorVariableContext(ParserRuleContext parent, int invokingState) {
24624 			super(parent, invokingState);
24625 		}
24626 		@Override public int getRuleIndex() { return RULE_cursorVariable; }
24627 		@Override
24628 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24629 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorVariable(this);
24630 			else return visitor.visitChildren(this);
24631 		}
24632 	}
24633 
24634 	public final CursorVariableContext cursorVariable() throws RecognitionException {
24635 		CursorVariableContext _localctx = new CursorVariableContext(_ctx, getState());
24636 		enterRule(_localctx, 516, RULE_cursorVariable);
24637 		int _la;
24638 		try {
24639 			setState(3507);
24640 			_errHandler.sync(this);
24641 			switch (_input.LA(1)) {
24642 			case TRUNCATE:
24643 			case SCHEMA:
24644 			case FUNCTION:
24645 			case TRIGGER:
24646 			case CAST:
24647 			case GROUP:
24648 			case LIMIT:
24649 			case OFFSET:
24650 			case SAVEPOINT:
24651 			case BOOLEAN:
24652 			case ARRAY:
24653 			case DATE:
24654 			case LOCALTIME:
24655 			case LOCALTIMESTAMP:
24656 			case QUARTER:
24657 			case WEEK:
24658 			case DAY:
24659 			case MICROSECOND:
24660 			case MAX:
24661 			case MIN:
24662 			case SUM:
24663 			case COUNT:
24664 			case AVG:
24665 			case ENABLE:
24666 			case DISABLE:
24667 			case INSTANCE:
24668 			case DO:
24669 			case DEFINER:
24670 			case SQL:
24671 			case CASCADED:
24672 			case LOCAL:
24673 			case NEXT:
24674 			case NAME:
24675 			case INTEGER:
24676 			case TYPE:
24677 			case READ_ONLY:
24678 			case DATABASE:
24679 			case DATEPART:
24680 			case PASSWORD:
24681 			case BINARY:
24682 			case HIDDEN_:
24683 			case MOD:
24684 			case PARTITION:
24685 			case PARTITIONS:
24686 			case TOP:
24687 			case ROW:
24688 			case ROWS:
24689 			case XOR:
24690 			case ALWAYS:
24691 			case ROLE:
24692 			case START:
24693 			case ALGORITHM:
24694 			case AUTO:
24695 			case BLOCKERS:
24696 			case CLUSTERED:
24697 			case NONCLUSTERED:
24698 			case COLUMNSTORE:
24699 			case CONTENT:
24700 			case YEARS:
24701 			case MONTHS:
24702 			case WEEKS:
24703 			case DAYS:
24704 			case MINUTES:
24705 			case DENY:
24706 			case DETERMINISTIC:
24707 			case DISTRIBUTION:
24708 			case DOCUMENT:
24709 			case DURABILITY:
24710 			case ENCRYPTED:
24711 			case FILESTREAM:
24712 			case FILETABLE:
24713 			case FILLFACTOR:
24714 			case FOLLOWING:
24715 			case HASH:
24716 			case HEAP:
24717 			case INBOUND:
24718 			case OUTBOUND:
24719 			case UNBOUNDED:
24720 			case INFINITE:
24721 			case LOGIN:
24722 			case MASKED:
24723 			case MAXDOP:
24724 			case MOVE:
24725 			case NOCHECK:
24726 			case OBJECT:
24727 			case OFF:
24728 			case ONLINE:
24729 			case OVER:
24730 			case PAGE:
24731 			case PAUSED:
24732 			case PERIOD:
24733 			case PERSISTED:
24734 			case PRECEDING:
24735 			case RANDOMIZED:
24736 			case RANGE:
24737 			case REBUILD:
24738 			case REPLICATE:
24739 			case REPLICATION:
24740 			case RESUMABLE:
24741 			case ROWGUIDCOL:
24742 			case SAVE:
24743 			case SELF:
24744 			case SPARSE:
24745 			case SWITCH:
24746 			case TRAN:
24747 			case TRANCOUNT:
24748 			case CONTROL:
24749 			case CONCAT:
24750 			case TAKE:
24751 			case OWNERSHIP:
24752 			case DEFINITION:
24753 			case APPLICATION:
24754 			case ASSEMBLY:
24755 			case SYMMETRIC:
24756 			case ASYMMETRIC:
24757 			case SERVER:
24758 			case RECEIVE:
24759 			case CHANGE:
24760 			case TRACE:
24761 			case TRACKING:
24762 			case RESOURCES:
24763 			case SETTINGS:
24764 			case STATE:
24765 			case AVAILABILITY:
24766 			case CREDENTIAL:
24767 			case ENDPOINT:
24768 			case EVENT:
24769 			case NOTIFICATION:
24770 			case LINKED:
24771 			case AUDIT:
24772 			case DDL:
24773 			case XML:
24774 			case IMPERSONATE:
24775 			case SECURABLES:
24776 			case AUTHENTICATE:
24777 			case EXTERNAL:
24778 			case ACCESS:
24779 			case ADMINISTER:
24780 			case BULK:
24781 			case OPERATIONS:
24782 			case UNSAFE:
24783 			case SHUTDOWN:
24784 			case SCOPED:
24785 			case CONFIGURATION:
24786 			case DATASPACE:
24787 			case SERVICE:
24788 			case CERTIFICATE:
24789 			case CONTRACT:
24790 			case ENCRYPTION:
24791 			case MASTER:
24792 			case DATA:
24793 			case SOURCE:
24794 			case FILE:
24795 			case FORMAT:
24796 			case LIBRARY:
24797 			case FULLTEXT:
24798 			case MASK:
24799 			case UNMASK:
24800 			case MESSAGE:
24801 			case REMOTE:
24802 			case BINDING:
24803 			case ROUTE:
24804 			case SECURITY:
24805 			case POLICY:
24806 			case AGGREGATE:
24807 			case QUEUE:
24808 			case RULE:
24809 			case SYNONYM:
24810 			case COLLECTION:
24811 			case SCRIPT:
24812 			case KILL:
24813 			case BACKUP:
24814 			case LOG:
24815 			case SHOWPLAN:
24816 			case SUBSCRIBE:
24817 			case QUERY:
24818 			case NOTIFICATIONS:
24819 			case CHECKPOINT:
24820 			case SEQUENCE:
24821 			case ABORT_AFTER_WAIT:
24822 			case ALLOW_PAGE_LOCKS:
24823 			case ALLOW_ROW_LOCKS:
24824 			case ALL_SPARSE_COLUMNS:
24825 			case BUCKET_COUNT:
24826 			case COLUMNSTORE_ARCHIVE:
24827 			case COLUMN_ENCRYPTION_KEY:
24828 			case COLUMN_SET:
24829 			case COMPRESSION_DELAY:
24830 			case DATABASE_DEAULT:
24831 			case DATA_COMPRESSION:
24832 			case DATA_CONSISTENCY_CHECK:
24833 			case ENCRYPTION_TYPE:
24834 			case SYSTEM_TIME:
24835 			case SYSTEM_VERSIONING:
24836 			case TEXTIMAGE_ON:
24837 			case WAIT_AT_LOW_PRIORITY:
24838 			case STATISTICS_INCREMENTAL:
24839 			case STATISTICS_NORECOMPUTE:
24840 			case ROUND_ROBIN:
24841 			case SCHEMA_AND_DATA:
24842 			case SCHEMA_ONLY:
24843 			case SORT_IN_TEMPDB:
24844 			case IGNORE_DUP_KEY:
24845 			case IMPLICIT_TRANSACTIONS:
24846 			case MAX_DURATION:
24847 			case MEMORY_OPTIMIZED:
24848 			case MIGRATION_STATE:
24849 			case PAD_INDEX:
24850 			case REMOTE_DATA_ARCHIVE:
24851 			case FILESTREAM_ON:
24852 			case FILETABLE_COLLATE_FILENAME:
24853 			case FILETABLE_DIRECTORY:
24854 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
24855 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
24856 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
24857 			case FILTER_PREDICATE:
24858 			case HISTORY_RETENTION_PERIOD:
24859 			case HISTORY_TABLE:
24860 			case LOCK_ESCALATION:
24861 			case DROP_EXISTING:
24862 			case ROW_NUMBER:
24863 			case FIRST:
24864 			case DATETIME2:
24865 			case OUTPUT:
24866 			case INSERTED:
24867 			case DELETED:
24868 			case FILENAME:
24869 			case MAXSIZE:
24870 			case FILEGROWTH:
24871 			case UNLIMITED:
24872 			case KB:
24873 			case MB:
24874 			case GB:
24875 			case TB:
24876 			case MEMORY_OPTIMIZED_DATA:
24877 			case FILEGROUP:
24878 			case NON_TRANSACTED_ACCESS:
24879 			case DB_CHAINING:
24880 			case TRUSTWORTHY:
24881 			case FORWARD_ONLY:
24882 			case KEYSET:
24883 			case FAST_FORWARD:
24884 			case SCROLL_LOCKS:
24885 			case OPTIMISTIC:
24886 			case TYPE_WARNING:
24887 			case SCHEMABINDING:
24888 			case CALLER:
24889 			case OWNER:
24890 			case SNAPSHOT:
24891 			case REPEATABLE:
24892 			case SERIALIZABLE:
24893 			case NATIVE_COMPILATION:
24894 			case VIEW_METADATA:
24895 			case INSTEAD:
24896 			case APPEND:
24897 			case INCREMENT:
24898 			case CACHE:
24899 			case MINVALUE:
24900 			case MAXVALUE:
24901 			case RESTART:
24902 			case LOB_COMPACTION:
24903 			case COMPRESS_ALL_ROW_GROUPS:
24904 			case REORGANIZE:
24905 			case RESUME:
24906 			case PAUSE:
24907 			case ABORT:
24908 			case ACCELERATED_DATABASE_RECOVERY:
24909 			case PERSISTENT_VERSION_STORE_FILEGROUP:
24910 			case IMMEDIATE:
24911 			case NO_WAIT:
24912 			case TARGET_RECOVERY_TIME:
24913 			case SECONDS:
24914 			case HONOR_BROKER_PRIORITY:
24915 			case ERROR_BROKER_CONVERSATIONS:
24916 			case NEW_BROKER:
24917 			case DISABLE_BROKER:
24918 			case ENABLE_BROKER:
24919 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
24920 			case READ_COMMITTED_SNAPSHOT:
24921 			case ALLOW_SNAPSHOT_ISOLATION:
24922 			case RECURSIVE_TRIGGERS:
24923 			case QUOTED_IDENTIFIER:
24924 			case NUMERIC_ROUNDABORT:
24925 			case CONCAT_NULL_YIELDS_NULL:
24926 			case COMPATIBILITY_LEVEL:
24927 			case ARITHABORT:
24928 			case ANSI_WARNINGS:
24929 			case ANSI_PADDING:
24930 			case ANSI_NULLS:
24931 			case ANSI_NULL_DEFAULT:
24932 			case PAGE_VERIFY:
24933 			case CHECKSUM:
24934 			case TORN_PAGE_DETECTION:
24935 			case BULK_LOGGED:
24936 			case RECOVERY:
24937 			case TOTAL_EXECUTION_CPU_TIME_MS:
24938 			case TOTAL_COMPILE_CPU_TIME_MS:
24939 			case STALE_CAPTURE_POLICY_THRESHOLD:
24940 			case EXECUTION_COUNT:
24941 			case QUERY_CAPTURE_POLICY:
24942 			case WAIT_STATS_CAPTURE_MODE:
24943 			case MAX_PLANS_PER_QUERY:
24944 			case QUERY_CAPTURE_MODE:
24945 			case SIZE_BASED_CLEANUP_MODE:
24946 			case INTERVAL_LENGTH_MINUTES:
24947 			case MAX_STORAGE_SIZE_MB:
24948 			case DATA_FLUSH_INTERVAL_SECONDS:
24949 			case CLEANUP_POLICY:
24950 			case CUSTOM:
24951 			case STALE_QUERY_THRESHOLD_DAYS:
24952 			case OPERATION_MODE:
24953 			case QUERY_STORE:
24954 			case CURSOR_DEFAULT:
24955 			case GLOBAL:
24956 			case CURSOR_CLOSE_ON_COMMIT:
24957 			case HOURS:
24958 			case CHANGE_RETENTION:
24959 			case AUTO_CLEANUP:
24960 			case CHANGE_TRACKING:
24961 			case AUTOMATIC_TUNING:
24962 			case FORCE_LAST_GOOD_PLAN:
24963 			case AUTO_UPDATE_STATISTICS_ASYNC:
24964 			case AUTO_UPDATE_STATISTICS:
24965 			case AUTO_SHRINK:
24966 			case AUTO_CREATE_STATISTICS:
24967 			case INCREMENTAL:
24968 			case AUTO_CLOSE:
24969 			case DATA_RETENTION:
24970 			case TEMPORAL_HISTORY_RETENTION:
24971 			case EDITION:
24972 			case MIXED_PAGE_ALLOCATION:
24973 			case DISABLED:
24974 			case ALLOWED:
24975 			case HADR:
24976 			case MULTI_USER:
24977 			case RESTRICTED_USER:
24978 			case SINGLE_USER:
24979 			case OFFLINE:
24980 			case EMERGENCY:
24981 			case SUSPEND:
24982 			case DATE_CORRELATION_OPTIMIZATION:
24983 			case ELASTIC_POOL:
24984 			case SERVICE_OBJECTIVE:
24985 			case DATABASE_NAME:
24986 			case ALLOW_CONNECTIONS:
24987 			case GEO:
24988 			case NAMED:
24989 			case DATEFIRST:
24990 			case BACKUP_STORAGE_REDUNDANCY:
24991 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
24992 			case SECONDARY:
24993 			case FAILOVER:
24994 			case DEFAULT_FULLTEXT_LANGUAGE:
24995 			case DEFAULT_LANGUAGE:
24996 			case INLINE:
24997 			case NESTED_TRIGGERS:
24998 			case TRANSFORM_NOISE_WORDS:
24999 			case TWO_DIGIT_YEAR_CUTOFF:
25000 			case PERSISTENT_LOG_BUFFER:
25001 			case DIRECTORY_NAME:
25002 			case DATEFORMAT:
25003 			case DELAYED_DURABILITY:
25004 			case AUTHORIZATION:
25005 			case TRANSFER:
25006 			case SEARCH:
25007 			case MEMBER:
25008 			case IDENTIFIER_:
25009 			case DELIMITED_IDENTIFIER_:
25010 				enterOuterAlt(_localctx, 1);
25011 				{
25012 				setState(3488);
25013 				variableName();
25014 				}
25015 				break;
25016 			case CURSOR:
25017 				enterOuterAlt(_localctx, 2);
25018 				{
25019 				setState(3489);
25020 				match(CURSOR);
25021 				setState(3490);
25022 				cursorClause();
25023 				setState(3491);
25024 				match(FOR);
25025 				setState(3492);
25026 				select();
25027 				{
25028 				setState(3493);
25029 				match(FOR);
25030 				setState(3505);
25031 				_errHandler.sync(this);
25032 				switch (_input.LA(1)) {
25033 				case READ_ONLY:
25034 					{
25035 					setState(3494);
25036 					match(READ_ONLY);
25037 					}
25038 					break;
25039 				case UPDATE:
25040 					{
25041 					setState(3495);
25042 					match(UPDATE);
25043 					{
25044 					setState(3496);
25045 					match(OF);
25046 					setState(3497);
25047 					name();
25048 					setState(3502);
25049 					_errHandler.sync(this);
25050 					_la = _input.LA(1);
25051 					while (_la==COMMA_) {
25052 						{
25053 						{
25054 						setState(3498);
25055 						match(COMMA_);
25056 						setState(3499);
25057 						name();
25058 						}
25059 						}
25060 						setState(3504);
25061 						_errHandler.sync(this);
25062 						_la = _input.LA(1);
25063 					}
25064 					}
25065 					}
25066 					break;
25067 				default:
25068 					throw new NoViableAltException(this);
25069 				}
25070 				}
25071 				}
25072 				break;
25073 			default:
25074 				throw new NoViableAltException(this);
25075 			}
25076 		}
25077 		catch (RecognitionException re) {
25078 			_localctx.exception = re;
25079 			_errHandler.reportError(this, re);
25080 			_errHandler.recover(this, re);
25081 		}
25082 		finally {
25083 			exitRule();
25084 		}
25085 		return _localctx;
25086 	}
25087 
25088 	public static class CursorClauseContext extends ParserRuleContext {
25089 		public TerminalNode TYPE_WARNING() { return getToken(SQLServerStatementParser.TYPE_WARNING, 0); }
25090 		public TerminalNode FORWARD_ONLY() { return getToken(SQLServerStatementParser.FORWARD_ONLY, 0); }
25091 		public TerminalNode SCROLL() { return getToken(SQLServerStatementParser.SCROLL, 0); }
25092 		public TerminalNode STATIC() { return getToken(SQLServerStatementParser.STATIC, 0); }
25093 		public TerminalNode KEYSET() { return getToken(SQLServerStatementParser.KEYSET, 0); }
25094 		public TerminalNode DYNAMIC() { return getToken(SQLServerStatementParser.DYNAMIC, 0); }
25095 		public TerminalNode FAST_FORWARD() { return getToken(SQLServerStatementParser.FAST_FORWARD, 0); }
25096 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
25097 		public TerminalNode SCROLL_LOCKS() { return getToken(SQLServerStatementParser.SCROLL_LOCKS, 0); }
25098 		public TerminalNode OPTIMISTIC() { return getToken(SQLServerStatementParser.OPTIMISTIC, 0); }
25099 		public CursorClauseContext(ParserRuleContext parent, int invokingState) {
25100 			super(parent, invokingState);
25101 		}
25102 		@Override public int getRuleIndex() { return RULE_cursorClause; }
25103 		@Override
25104 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25105 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorClause(this);
25106 			else return visitor.visitChildren(this);
25107 		}
25108 	}
25109 
25110 	public final CursorClauseContext cursorClause() throws RecognitionException {
25111 		CursorClauseContext _localctx = new CursorClauseContext(_ctx, getState());
25112 		enterRule(_localctx, 518, RULE_cursorClause);
25113 		int _la;
25114 		try {
25115 			enterOuterAlt(_localctx, 1);
25116 			{
25117 			setState(3510);
25118 			_errHandler.sync(this);
25119 			_la = _input.LA(1);
25120 			if (_la==FORWARD_ONLY || _la==SCROLL) {
25121 				{
25122 				setState(3509);
25123 				_la = _input.LA(1);
25124 				if ( !(_la==FORWARD_ONLY || _la==SCROLL) ) {
25125 				_errHandler.recoverInline(this);
25126 				}
25127 				else {
25128 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
25129 					_errHandler.reportMatch(this);
25130 					consume();
25131 				}
25132 				}
25133 			}
25134 
25135 			setState(3513);
25136 			_errHandler.sync(this);
25137 			_la = _input.LA(1);
25138 			if (((((_la - 495)) & ~0x3f) == 0 && ((1L << (_la - 495)) & ((1L << (STATIC - 495)) | (1L << (KEYSET - 495)) | (1L << (DYNAMIC - 495)) | (1L << (FAST_FORWARD - 495)))) != 0)) {
25139 				{
25140 				setState(3512);
25141 				_la = _input.LA(1);
25142 				if ( !(((((_la - 495)) & ~0x3f) == 0 && ((1L << (_la - 495)) & ((1L << (STATIC - 495)) | (1L << (KEYSET - 495)) | (1L << (DYNAMIC - 495)) | (1L << (FAST_FORWARD - 495)))) != 0)) ) {
25143 				_errHandler.recoverInline(this);
25144 				}
25145 				else {
25146 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
25147 					_errHandler.reportMatch(this);
25148 					consume();
25149 				}
25150 				}
25151 			}
25152 
25153 			setState(3516);
25154 			_errHandler.sync(this);
25155 			_la = _input.LA(1);
25156 			if (_la==READ_ONLY || _la==SCROLL_LOCKS || _la==OPTIMISTIC) {
25157 				{
25158 				setState(3515);
25159 				_la = _input.LA(1);
25160 				if ( !(_la==READ_ONLY || _la==SCROLL_LOCKS || _la==OPTIMISTIC) ) {
25161 				_errHandler.recoverInline(this);
25162 				}
25163 				else {
25164 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
25165 					_errHandler.reportMatch(this);
25166 					consume();
25167 				}
25168 				}
25169 			}
25170 
25171 			setState(3519);
25172 			_errHandler.sync(this);
25173 			_la = _input.LA(1);
25174 			if (_la==TYPE_WARNING) {
25175 				{
25176 				setState(3518);
25177 				match(TYPE_WARNING);
25178 				}
25179 			}
25180 
25181 			}
25182 		}
25183 		catch (RecognitionException re) {
25184 			_localctx.exception = re;
25185 			_errHandler.reportError(this, re);
25186 			_errHandler.recover(this, re);
25187 		}
25188 		finally {
25189 			exitRule();
25190 		}
25191 		return _localctx;
25192 	}
25193 
25194 	public static class CompoundOperationContext extends ParserRuleContext {
25195 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
25196 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
25197 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
25198 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
25199 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
25200 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
25201 		public TerminalNode AMPERSAND_() { return getToken(SQLServerStatementParser.AMPERSAND_, 0); }
25202 		public TerminalNode CARET_() { return getToken(SQLServerStatementParser.CARET_, 0); }
25203 		public TerminalNode VERTICAL_BAR_() { return getToken(SQLServerStatementParser.VERTICAL_BAR_, 0); }
25204 		public CompoundOperationContext(ParserRuleContext parent, int invokingState) {
25205 			super(parent, invokingState);
25206 		}
25207 		@Override public int getRuleIndex() { return RULE_compoundOperation; }
25208 		@Override
25209 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25210 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompoundOperation(this);
25211 			else return visitor.visitChildren(this);
25212 		}
25213 	}
25214 
25215 	public final CompoundOperationContext compoundOperation() throws RecognitionException {
25216 		CompoundOperationContext _localctx = new CompoundOperationContext(_ctx, getState());
25217 		enterRule(_localctx, 520, RULE_compoundOperation);
25218 		try {
25219 			setState(3537);
25220 			_errHandler.sync(this);
25221 			switch (_input.LA(1)) {
25222 			case PLUS_:
25223 				enterOuterAlt(_localctx, 1);
25224 				{
25225 				setState(3521);
25226 				match(PLUS_);
25227 				setState(3522);
25228 				match(EQ_);
25229 				}
25230 				break;
25231 			case MINUS_:
25232 				enterOuterAlt(_localctx, 2);
25233 				{
25234 				setState(3523);
25235 				match(MINUS_);
25236 				setState(3524);
25237 				match(EQ_);
25238 				}
25239 				break;
25240 			case ASTERISK_:
25241 				enterOuterAlt(_localctx, 3);
25242 				{
25243 				setState(3525);
25244 				match(ASTERISK_);
25245 				setState(3526);
25246 				match(EQ_);
25247 				}
25248 				break;
25249 			case SLASH_:
25250 				enterOuterAlt(_localctx, 4);
25251 				{
25252 				setState(3527);
25253 				match(SLASH_);
25254 				setState(3528);
25255 				match(EQ_);
25256 				}
25257 				break;
25258 			case MOD_:
25259 				enterOuterAlt(_localctx, 5);
25260 				{
25261 				setState(3529);
25262 				match(MOD_);
25263 				setState(3530);
25264 				match(EQ_);
25265 				}
25266 				break;
25267 			case AMPERSAND_:
25268 				enterOuterAlt(_localctx, 6);
25269 				{
25270 				setState(3531);
25271 				match(AMPERSAND_);
25272 				setState(3532);
25273 				match(EQ_);
25274 				}
25275 				break;
25276 			case CARET_:
25277 				enterOuterAlt(_localctx, 7);
25278 				{
25279 				setState(3533);
25280 				match(CARET_);
25281 				setState(3534);
25282 				match(EQ_);
25283 				}
25284 				break;
25285 			case VERTICAL_BAR_:
25286 				enterOuterAlt(_localctx, 8);
25287 				{
25288 				setState(3535);
25289 				match(VERTICAL_BAR_);
25290 				setState(3536);
25291 				match(EQ_);
25292 				}
25293 				break;
25294 			default:
25295 				throw new NoViableAltException(this);
25296 			}
25297 		}
25298 		catch (RecognitionException re) {
25299 			_localctx.exception = re;
25300 			_errHandler.reportError(this, re);
25301 			_errHandler.recover(this, re);
25302 		}
25303 		finally {
25304 			exitRule();
25305 		}
25306 		return _localctx;
25307 	}
25308 
25309 	public static class FuncParametersContext extends ParserRuleContext {
25310 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25311 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25312 		public List<VariableNameContext> variableName() {
25313 			return getRuleContexts(VariableNameContext.class);
25314 		}
25315 		public VariableNameContext variableName(int i) {
25316 			return getRuleContext(VariableNameContext.class,i);
25317 		}
25318 		public List<DataTypeContext> dataType() {
25319 			return getRuleContexts(DataTypeContext.class);
25320 		}
25321 		public DataTypeContext dataType(int i) {
25322 			return getRuleContext(DataTypeContext.class,i);
25323 		}
25324 		public List<TerminalNode> AS() { return getTokens(SQLServerStatementParser.AS); }
25325 		public TerminalNode AS(int i) {
25326 			return getToken(SQLServerStatementParser.AS, i);
25327 		}
25328 		public List<OwnerContext> owner() {
25329 			return getRuleContexts(OwnerContext.class);
25330 		}
25331 		public OwnerContext owner(int i) {
25332 			return getRuleContext(OwnerContext.class,i);
25333 		}
25334 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
25335 		public TerminalNode DOT_(int i) {
25336 			return getToken(SQLServerStatementParser.DOT_, i);
25337 		}
25338 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
25339 		public TerminalNode EQ_(int i) {
25340 			return getToken(SQLServerStatementParser.EQ_, i);
25341 		}
25342 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
25343 			return getRuleContexts(IgnoredIdentifierContext.class);
25344 		}
25345 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
25346 			return getRuleContext(IgnoredIdentifierContext.class,i);
25347 		}
25348 		public List<TerminalNode> READONLY() { return getTokens(SQLServerStatementParser.READONLY); }
25349 		public TerminalNode READONLY(int i) {
25350 			return getToken(SQLServerStatementParser.READONLY, i);
25351 		}
25352 		public FuncParametersContext(ParserRuleContext parent, int invokingState) {
25353 			super(parent, invokingState);
25354 		}
25355 		@Override public int getRuleIndex() { return RULE_funcParameters; }
25356 		@Override
25357 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25358 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncParameters(this);
25359 			else return visitor.visitChildren(this);
25360 		}
25361 	}
25362 
25363 	public final FuncParametersContext funcParameters() throws RecognitionException {
25364 		FuncParametersContext _localctx = new FuncParametersContext(_ctx, getState());
25365 		enterRule(_localctx, 522, RULE_funcParameters);
25366 		int _la;
25367 		try {
25368 			enterOuterAlt(_localctx, 1);
25369 			{
25370 			setState(3539);
25371 			match(LP_);
25372 			setState(3559);
25373 			_errHandler.sync(this);
25374 			_la = _input.LA(1);
25375 			while (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (GROUP - 53)))) != 0) || ((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (LIMIT - 121)) | (1L << (OFFSET - 121)) | (1L << (SAVEPOINT - 121)) | (1L << (BOOLEAN - 121)) | (1L << (ARRAY - 121)) | (1L << (DATE - 121)) | (1L << (LOCALTIME - 121)) | (1L << (LOCALTIMESTAMP - 121)) | (1L << (QUARTER - 121)) | (1L << (WEEK - 121)) | (1L << (DAY - 121)) | (1L << (MICROSECOND - 121)) | (1L << (MAX - 121)) | (1L << (MIN - 121)) | (1L << (SUM - 121)) | (1L << (COUNT - 121)) | (1L << (AVG - 121)) | (1L << (ENABLE - 121)) | (1L << (DISABLE - 121)) | (1L << (INSTANCE - 121)) | (1L << (DO - 121)) | (1L << (DEFINER - 121)) | (1L << (SQL - 121)) | (1L << (CASCADED - 121)) | (1L << (LOCAL - 121)) | (1L << (NEXT - 121)) | (1L << (NAME - 121)) | (1L << (INTEGER - 121)) | (1L << (TYPE - 121)))) != 0) || ((((_la - 201)) & ~0x3f) == 0 && ((1L << (_la - 201)) & ((1L << (READ_ONLY - 201)) | (1L << (DATABASE - 201)) | (1L << (DATEPART - 201)) | (1L << (PASSWORD - 201)) | (1L << (BINARY - 201)) | (1L << (HIDDEN_ - 201)) | (1L << (MOD - 201)) | (1L << (PARTITION - 201)) | (1L << (PARTITIONS - 201)) | (1L << (TOP - 201)) | (1L << (ROW - 201)) | (1L << (ROWS - 201)) | (1L << (XOR - 201)) | (1L << (ALWAYS - 201)) | (1L << (ROLE - 201)) | (1L << (START - 201)) | (1L << (ALGORITHM - 201)) | (1L << (AUTO - 201)) | (1L << (BLOCKERS - 201)) | (1L << (CLUSTERED - 201)) | (1L << (NONCLUSTERED - 201)) | (1L << (COLUMNSTORE - 201)) | (1L << (CONTENT - 201)) | (1L << (YEARS - 201)) | (1L << (MONTHS - 201)) | (1L << (WEEKS - 201)) | (1L << (DAYS - 201)) | (1L << (MINUTES - 201)) | (1L << (DENY - 201)) | (1L << (DETERMINISTIC - 201)) | (1L << (DISTRIBUTION - 201)) | (1L << (DOCUMENT - 201)) | (1L << (DURABILITY - 201)) | (1L << (ENCRYPTED - 201)) | (1L << (FILESTREAM - 201)) | (1L << (FILETABLE - 201)) | (1L << (FILLFACTOR - 201)) | (1L << (FOLLOWING - 201)) | (1L << (HASH - 201)) | (1L << (HEAP - 201)))) != 0) || ((((_la - 266)) & ~0x3f) == 0 && ((1L << (_la - 266)) & ((1L << (INBOUND - 266)) | (1L << (OUTBOUND - 266)) | (1L << (UNBOUNDED - 266)) | (1L << (INFINITE - 266)) | (1L << (LOGIN - 266)) | (1L << (MASKED - 266)) | (1L << (MAXDOP - 266)) | (1L << (MOVE - 266)) | (1L << (NOCHECK - 266)) | (1L << (OBJECT - 266)) | (1L << (OFF - 266)) | (1L << (ONLINE - 266)) | (1L << (OVER - 266)) | (1L << (PAGE - 266)) | (1L << (PAUSED - 266)) | (1L << (PERIOD - 266)) | (1L << (PERSISTED - 266)) | (1L << (PRECEDING - 266)) | (1L << (RANDOMIZED - 266)) | (1L << (RANGE - 266)) | (1L << (REBUILD - 266)) | (1L << (REPLICATE - 266)) | (1L << (REPLICATION - 266)) | (1L << (RESUMABLE - 266)) | (1L << (ROWGUIDCOL - 266)) | (1L << (SAVE - 266)) | (1L << (SELF - 266)) | (1L << (SPARSE - 266)) | (1L << (SWITCH - 266)) | (1L << (TRAN - 266)) | (1L << (TRANCOUNT - 266)) | (1L << (CONTROL - 266)) | (1L << (CONCAT - 266)) | (1L << (TAKE - 266)) | (1L << (OWNERSHIP - 266)) | (1L << (DEFINITION - 266)) | (1L << (APPLICATION - 266)) | (1L << (ASSEMBLY - 266)) | (1L << (SYMMETRIC - 266)) | (1L << (ASYMMETRIC - 266)) | (1L << (SERVER - 266)) | (1L << (RECEIVE - 266)) | (1L << (CHANGE - 266)) | (1L << (TRACE - 266)) | (1L << (TRACKING - 266)) | (1L << (RESOURCES - 266)) | (1L << (SETTINGS - 266)) | (1L << (STATE - 266)) | (1L << (AVAILABILITY - 266)) | (1L << (CREDENTIAL - 266)) | (1L << (ENDPOINT - 266)) | (1L << (EVENT - 266)) | (1L << (NOTIFICATION - 266)) | (1L << (LINKED - 266)) | (1L << (AUDIT - 266)) | (1L << (DDL - 266)))) != 0) || ((((_la - 330)) & ~0x3f) == 0 && ((1L << (_la - 330)) & ((1L << (XML - 330)) | (1L << (IMPERSONATE - 330)) | (1L << (SECURABLES - 330)) | (1L << (AUTHENTICATE - 330)) | (1L << (EXTERNAL - 330)) | (1L << (ACCESS - 330)) | (1L << (ADMINISTER - 330)) | (1L << (BULK - 330)) | (1L << (OPERATIONS - 330)) | (1L << (UNSAFE - 330)) | (1L << (SHUTDOWN - 330)) | (1L << (SCOPED - 330)) | (1L << (CONFIGURATION - 330)) | (1L << (DATASPACE - 330)) | (1L << (SERVICE - 330)) | (1L << (CERTIFICATE - 330)) | (1L << (CONTRACT - 330)) | (1L << (ENCRYPTION - 330)) | (1L << (MASTER - 330)) | (1L << (DATA - 330)) | (1L << (SOURCE - 330)) | (1L << (FILE - 330)) | (1L << (FORMAT - 330)) | (1L << (LIBRARY - 330)) | (1L << (FULLTEXT - 330)) | (1L << (MASK - 330)) | (1L << (UNMASK - 330)) | (1L << (MESSAGE - 330)) | (1L << (REMOTE - 330)) | (1L << (BINDING - 330)) | (1L << (ROUTE - 330)) | (1L << (SECURITY - 330)) | (1L << (POLICY - 330)) | (1L << (AGGREGATE - 330)) | (1L << (QUEUE - 330)) | (1L << (RULE - 330)) | (1L << (SYNONYM - 330)) | (1L << (COLLECTION - 330)) | (1L << (SCRIPT - 330)) | (1L << (KILL - 330)) | (1L << (BACKUP - 330)) | (1L << (LOG - 330)) | (1L << (SHOWPLAN - 330)) | (1L << (SUBSCRIBE - 330)) | (1L << (QUERY - 330)) | (1L << (NOTIFICATIONS - 330)) | (1L << (CHECKPOINT - 330)) | (1L << (SEQUENCE - 330)) | (1L << (ABORT_AFTER_WAIT - 330)) | (1L << (ALLOW_PAGE_LOCKS - 330)) | (1L << (ALLOW_ROW_LOCKS - 330)) | (1L << (ALL_SPARSE_COLUMNS - 330)) | (1L << (BUCKET_COUNT - 330)) | (1L << (COLUMNSTORE_ARCHIVE - 330)) | (1L << (COLUMN_ENCRYPTION_KEY - 330)) | (1L << (COLUMN_SET - 330)) | (1L << (COMPRESSION_DELAY - 330)) | (1L << (DATABASE_DEAULT - 330)) | (1L << (DATA_COMPRESSION - 330)) | (1L << (DATA_CONSISTENCY_CHECK - 330)) | (1L << (ENCRYPTION_TYPE - 330)) | (1L << (SYSTEM_TIME - 330)) | (1L << (SYSTEM_VERSIONING - 330)) | (1L << (TEXTIMAGE_ON - 330)))) != 0) || ((((_la - 394)) & ~0x3f) == 0 && ((1L << (_la - 394)) & ((1L << (WAIT_AT_LOW_PRIORITY - 394)) | (1L << (STATISTICS_INCREMENTAL - 394)) | (1L << (STATISTICS_NORECOMPUTE - 394)) | (1L << (ROUND_ROBIN - 394)) | (1L << (SCHEMA_AND_DATA - 394)) | (1L << (SCHEMA_ONLY - 394)) | (1L << (SORT_IN_TEMPDB - 394)) | (1L << (IGNORE_DUP_KEY - 394)) | (1L << (IMPLICIT_TRANSACTIONS - 394)) | (1L << (MAX_DURATION - 394)) | (1L << (MEMORY_OPTIMIZED - 394)) | (1L << (MIGRATION_STATE - 394)) | (1L << (PAD_INDEX - 394)) | (1L << (REMOTE_DATA_ARCHIVE - 394)) | (1L << (FILESTREAM_ON - 394)) | (1L << (FILETABLE_COLLATE_FILENAME - 394)) | (1L << (FILETABLE_DIRECTORY - 394)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILTER_PREDICATE - 394)) | (1L << (HISTORY_RETENTION_PERIOD - 394)) | (1L << (HISTORY_TABLE - 394)) | (1L << (LOCK_ESCALATION - 394)) | (1L << (DROP_EXISTING - 394)) | (1L << (ROW_NUMBER - 394)) | (1L << (FIRST - 394)) | (1L << (DATETIME2 - 394)) | (1L << (OUTPUT - 394)) | (1L << (INSERTED - 394)) | (1L << (DELETED - 394)))) != 0) || ((((_la - 478)) & ~0x3f) == 0 && ((1L << (_la - 478)) & ((1L << (FILENAME - 478)) | (1L << (MAXSIZE - 478)) | (1L << (FILEGROWTH - 478)) | (1L << (UNLIMITED - 478)) | (1L << (KB - 478)) | (1L << (MB - 478)) | (1L << (GB - 478)) | (1L << (TB - 478)) | (1L << (MEMORY_OPTIMIZED_DATA - 478)) | (1L << (FILEGROUP - 478)) | (1L << (NON_TRANSACTED_ACCESS - 478)) | (1L << (DB_CHAINING - 478)) | (1L << (TRUSTWORTHY - 478)) | (1L << (FORWARD_ONLY - 478)) | (1L << (KEYSET - 478)) | (1L << (FAST_FORWARD - 478)) | (1L << (SCROLL_LOCKS - 478)) | (1L << (OPTIMISTIC - 478)) | (1L << (TYPE_WARNING - 478)) | (1L << (SCHEMABINDING - 478)) | (1L << (CALLER - 478)) | (1L << (OWNER - 478)) | (1L << (SNAPSHOT - 478)) | (1L << (REPEATABLE - 478)) | (1L << (SERIALIZABLE - 478)) | (1L << (NATIVE_COMPILATION - 478)) | (1L << (VIEW_METADATA - 478)) | (1L << (INSTEAD - 478)) | (1L << (APPEND - 478)) | (1L << (INCREMENT - 478)) | (1L << (CACHE - 478)) | (1L << (MINVALUE - 478)) | (1L << (MAXVALUE - 478)) | (1L << (RESTART - 478)) | (1L << (LOB_COMPACTION - 478)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 478)) | (1L << (REORGANIZE - 478)) | (1L << (RESUME - 478)) | (1L << (PAUSE - 478)) | (1L << (ABORT - 478)))) != 0) || ((((_la - 544)) & ~0x3f) == 0 && ((1L << (_la - 544)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 544)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 544)) | (1L << (IMMEDIATE - 544)) | (1L << (NO_WAIT - 544)) | (1L << (TARGET_RECOVERY_TIME - 544)) | (1L << (SECONDS - 544)) | (1L << (HONOR_BROKER_PRIORITY - 544)) | (1L << (ERROR_BROKER_CONVERSATIONS - 544)) | (1L << (NEW_BROKER - 544)) | (1L << (DISABLE_BROKER - 544)) | (1L << (ENABLE_BROKER - 544)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 544)) | (1L << (READ_COMMITTED_SNAPSHOT - 544)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 544)) | (1L << (RECURSIVE_TRIGGERS - 544)) | (1L << (QUOTED_IDENTIFIER - 544)) | (1L << (NUMERIC_ROUNDABORT - 544)) | (1L << (CONCAT_NULL_YIELDS_NULL - 544)) | (1L << (COMPATIBILITY_LEVEL - 544)) | (1L << (ARITHABORT - 544)) | (1L << (ANSI_WARNINGS - 544)) | (1L << (ANSI_PADDING - 544)) | (1L << (ANSI_NULLS - 544)) | (1L << (ANSI_NULL_DEFAULT - 544)) | (1L << (PAGE_VERIFY - 544)) | (1L << (CHECKSUM - 544)) | (1L << (TORN_PAGE_DETECTION - 544)) | (1L << (BULK_LOGGED - 544)) | (1L << (RECOVERY - 544)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 544)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 544)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 544)) | (1L << (EXECUTION_COUNT - 544)) | (1L << (QUERY_CAPTURE_POLICY - 544)) | (1L << (WAIT_STATS_CAPTURE_MODE - 544)) | (1L << (MAX_PLANS_PER_QUERY - 544)) | (1L << (QUERY_CAPTURE_MODE - 544)) | (1L << (SIZE_BASED_CLEANUP_MODE - 544)) | (1L << (INTERVAL_LENGTH_MINUTES - 544)) | (1L << (MAX_STORAGE_SIZE_MB - 544)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 544)) | (1L << (CLEANUP_POLICY - 544)) | (1L << (CUSTOM - 544)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 544)) | (1L << (OPERATION_MODE - 544)) | (1L << (QUERY_STORE - 544)) | (1L << (CURSOR_DEFAULT - 544)) | (1L << (GLOBAL - 544)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 544)) | (1L << (HOURS - 544)) | (1L << (CHANGE_RETENTION - 544)) | (1L << (AUTO_CLEANUP - 544)) | (1L << (CHANGE_TRACKING - 544)) | (1L << (AUTOMATIC_TUNING - 544)) | (1L << (FORCE_LAST_GOOD_PLAN - 544)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 544)) | (1L << (AUTO_UPDATE_STATISTICS - 544)) | (1L << (AUTO_SHRINK - 544)) | (1L << (AUTO_CREATE_STATISTICS - 544)) | (1L << (INCREMENTAL - 544)) | (1L << (AUTO_CLOSE - 544)) | (1L << (DATA_RETENTION - 544)) | (1L << (TEMPORAL_HISTORY_RETENTION - 544)) | (1L << (EDITION - 544)))) != 0) || ((((_la - 608)) & ~0x3f) == 0 && ((1L << (_la - 608)) & ((1L << (MIXED_PAGE_ALLOCATION - 608)) | (1L << (DISABLED - 608)) | (1L << (ALLOWED - 608)) | (1L << (HADR - 608)) | (1L << (MULTI_USER - 608)) | (1L << (RESTRICTED_USER - 608)) | (1L << (SINGLE_USER - 608)) | (1L << (OFFLINE - 608)) | (1L << (EMERGENCY - 608)) | (1L << (SUSPEND - 608)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 608)) | (1L << (ELASTIC_POOL - 608)) | (1L << (SERVICE_OBJECTIVE - 608)) | (1L << (DATABASE_NAME - 608)) | (1L << (ALLOW_CONNECTIONS - 608)) | (1L << (GEO - 608)) | (1L << (NAMED - 608)) | (1L << (DATEFIRST - 608)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 608)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 608)) | (1L << (SECONDARY - 608)) | (1L << (FAILOVER - 608)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 608)) | (1L << (DEFAULT_LANGUAGE - 608)) | (1L << (INLINE - 608)) | (1L << (NESTED_TRIGGERS - 608)) | (1L << (TRANSFORM_NOISE_WORDS - 608)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 608)) | (1L << (PERSISTENT_LOG_BUFFER - 608)) | (1L << (DIRECTORY_NAME - 608)) | (1L << (DATEFORMAT - 608)) | (1L << (DELAYED_DURABILITY - 608)) | (1L << (AUTHORIZATION - 608)) | (1L << (TRANSFER - 608)) | (1L << (SEARCH - 608)) | (1L << (MEMBER - 608)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
25376 				{
25377 				{
25378 				setState(3540);
25379 				variableName();
25380 				setState(3542);
25381 				_errHandler.sync(this);
25382 				_la = _input.LA(1);
25383 				if (_la==AS) {
25384 					{
25385 					setState(3541);
25386 					match(AS);
25387 					}
25388 				}
25389 
25390 				setState(3547);
25391 				_errHandler.sync(this);
25392 				switch ( getInterpreter().adaptivePredict(_input,348,_ctx) ) {
25393 				case 1:
25394 					{
25395 					setState(3544);
25396 					owner();
25397 					setState(3545);
25398 					match(DOT_);
25399 					}
25400 					break;
25401 				}
25402 				setState(3549);
25403 				dataType();
25404 				setState(3552);
25405 				_errHandler.sync(this);
25406 				_la = _input.LA(1);
25407 				if (_la==EQ_) {
25408 					{
25409 					setState(3550);
25410 					match(EQ_);
25411 					setState(3551);
25412 					ignoredIdentifier();
25413 					}
25414 				}
25415 
25416 				setState(3555);
25417 				_errHandler.sync(this);
25418 				_la = _input.LA(1);
25419 				if (_la==READONLY) {
25420 					{
25421 					setState(3554);
25422 					match(READONLY);
25423 					}
25424 				}
25425 
25426 				}
25427 				}
25428 				setState(3561);
25429 				_errHandler.sync(this);
25430 				_la = _input.LA(1);
25431 			}
25432 			setState(3562);
25433 			match(RP_);
25434 			}
25435 		}
25436 		catch (RecognitionException re) {
25437 			_localctx.exception = re;
25438 			_errHandler.reportError(this, re);
25439 			_errHandler.recover(this, re);
25440 		}
25441 		finally {
25442 			exitRule();
25443 		}
25444 		return _localctx;
25445 	}
25446 
25447 	public static class FuncReturnsContext extends ParserRuleContext {
25448 		public FuncScalarReturnContext funcScalarReturn() {
25449 			return getRuleContext(FuncScalarReturnContext.class,0);
25450 		}
25451 		public FuncInlineReturnContext funcInlineReturn() {
25452 			return getRuleContext(FuncInlineReturnContext.class,0);
25453 		}
25454 		public FuncMutiReturnContext funcMutiReturn() {
25455 			return getRuleContext(FuncMutiReturnContext.class,0);
25456 		}
25457 		public FuncReturnsContext(ParserRuleContext parent, int invokingState) {
25458 			super(parent, invokingState);
25459 		}
25460 		@Override public int getRuleIndex() { return RULE_funcReturns; }
25461 		@Override
25462 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25463 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncReturns(this);
25464 			else return visitor.visitChildren(this);
25465 		}
25466 	}
25467 
25468 	public final FuncReturnsContext funcReturns() throws RecognitionException {
25469 		FuncReturnsContext _localctx = new FuncReturnsContext(_ctx, getState());
25470 		enterRule(_localctx, 524, RULE_funcReturns);
25471 		try {
25472 			setState(3567);
25473 			_errHandler.sync(this);
25474 			switch ( getInterpreter().adaptivePredict(_input,352,_ctx) ) {
25475 			case 1:
25476 				enterOuterAlt(_localctx, 1);
25477 				{
25478 				setState(3564);
25479 				funcScalarReturn();
25480 				}
25481 				break;
25482 			case 2:
25483 				enterOuterAlt(_localctx, 2);
25484 				{
25485 				setState(3565);
25486 				funcInlineReturn();
25487 				}
25488 				break;
25489 			case 3:
25490 				enterOuterAlt(_localctx, 3);
25491 				{
25492 				setState(3566);
25493 				funcMutiReturn();
25494 				}
25495 				break;
25496 			}
25497 		}
25498 		catch (RecognitionException re) {
25499 			_localctx.exception = re;
25500 			_errHandler.reportError(this, re);
25501 			_errHandler.recover(this, re);
25502 		}
25503 		finally {
25504 			exitRule();
25505 		}
25506 		return _localctx;
25507 	}
25508 
25509 	public static class FuncMutiReturnContext extends ParserRuleContext {
25510 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
25511 		public VariableNameContext variableName() {
25512 			return getRuleContext(VariableNameContext.class,0);
25513 		}
25514 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
25515 		public CreateTableDefinitionsContext createTableDefinitions() {
25516 			return getRuleContext(CreateTableDefinitionsContext.class,0);
25517 		}
25518 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
25519 		public CompoundStatementContext compoundStatement() {
25520 			return getRuleContext(CompoundStatementContext.class,0);
25521 		}
25522 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
25523 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
25524 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
25525 		public List<FunctionOptionContext> functionOption() {
25526 			return getRuleContexts(FunctionOptionContext.class);
25527 		}
25528 		public FunctionOptionContext functionOption(int i) {
25529 			return getRuleContext(FunctionOptionContext.class,i);
25530 		}
25531 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
25532 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25533 		public TerminalNode COMMA_(int i) {
25534 			return getToken(SQLServerStatementParser.COMMA_, i);
25535 		}
25536 		public FuncMutiReturnContext(ParserRuleContext parent, int invokingState) {
25537 			super(parent, invokingState);
25538 		}
25539 		@Override public int getRuleIndex() { return RULE_funcMutiReturn; }
25540 		@Override
25541 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25542 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncMutiReturn(this);
25543 			else return visitor.visitChildren(this);
25544 		}
25545 	}
25546 
25547 	public final FuncMutiReturnContext funcMutiReturn() throws RecognitionException {
25548 		FuncMutiReturnContext _localctx = new FuncMutiReturnContext(_ctx, getState());
25549 		enterRule(_localctx, 526, RULE_funcMutiReturn);
25550 		int _la;
25551 		try {
25552 			enterOuterAlt(_localctx, 1);
25553 			{
25554 			setState(3569);
25555 			match(RETURNS);
25556 			setState(3570);
25557 			variableName();
25558 			setState(3571);
25559 			match(TABLE);
25560 			setState(3572);
25561 			createTableDefinitions();
25562 			setState(3582);
25563 			_errHandler.sync(this);
25564 			_la = _input.LA(1);
25565 			if (_la==WITH) {
25566 				{
25567 				setState(3573);
25568 				match(WITH);
25569 				setState(3574);
25570 				functionOption();
25571 				setState(3579);
25572 				_errHandler.sync(this);
25573 				_la = _input.LA(1);
25574 				while (_la==COMMA_) {
25575 					{
25576 					{
25577 					setState(3575);
25578 					match(COMMA_);
25579 					setState(3576);
25580 					functionOption();
25581 					}
25582 					}
25583 					setState(3581);
25584 					_errHandler.sync(this);
25585 					_la = _input.LA(1);
25586 				}
25587 				}
25588 			}
25589 
25590 			setState(3585);
25591 			_errHandler.sync(this);
25592 			_la = _input.LA(1);
25593 			if (_la==AS) {
25594 				{
25595 				setState(3584);
25596 				match(AS);
25597 				}
25598 			}
25599 
25600 			setState(3587);
25601 			match(BEGIN);
25602 			setState(3588);
25603 			compoundStatement();
25604 			setState(3589);
25605 			match(RETURN);
25606 			setState(3590);
25607 			match(END);
25608 			}
25609 		}
25610 		catch (RecognitionException re) {
25611 			_localctx.exception = re;
25612 			_errHandler.reportError(this, re);
25613 			_errHandler.recover(this, re);
25614 		}
25615 		finally {
25616 			exitRule();
25617 		}
25618 		return _localctx;
25619 	}
25620 
25621 	public static class FuncInlineReturnContext extends ParserRuleContext {
25622 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
25623 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
25624 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
25625 		public SelectContext select() {
25626 			return getRuleContext(SelectContext.class,0);
25627 		}
25628 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
25629 		public List<FunctionOptionContext> functionOption() {
25630 			return getRuleContexts(FunctionOptionContext.class);
25631 		}
25632 		public FunctionOptionContext functionOption(int i) {
25633 			return getRuleContext(FunctionOptionContext.class,i);
25634 		}
25635 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
25636 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25637 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25638 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25639 		public TerminalNode COMMA_(int i) {
25640 			return getToken(SQLServerStatementParser.COMMA_, i);
25641 		}
25642 		public FuncInlineReturnContext(ParserRuleContext parent, int invokingState) {
25643 			super(parent, invokingState);
25644 		}
25645 		@Override public int getRuleIndex() { return RULE_funcInlineReturn; }
25646 		@Override
25647 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25648 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncInlineReturn(this);
25649 			else return visitor.visitChildren(this);
25650 		}
25651 	}
25652 
25653 	public final FuncInlineReturnContext funcInlineReturn() throws RecognitionException {
25654 		FuncInlineReturnContext _localctx = new FuncInlineReturnContext(_ctx, getState());
25655 		enterRule(_localctx, 528, RULE_funcInlineReturn);
25656 		int _la;
25657 		try {
25658 			enterOuterAlt(_localctx, 1);
25659 			{
25660 			setState(3592);
25661 			match(RETURNS);
25662 			setState(3593);
25663 			match(TABLE);
25664 			setState(3603);
25665 			_errHandler.sync(this);
25666 			_la = _input.LA(1);
25667 			if (_la==WITH) {
25668 				{
25669 				setState(3594);
25670 				match(WITH);
25671 				setState(3595);
25672 				functionOption();
25673 				setState(3600);
25674 				_errHandler.sync(this);
25675 				_la = _input.LA(1);
25676 				while (_la==COMMA_) {
25677 					{
25678 					{
25679 					setState(3596);
25680 					match(COMMA_);
25681 					setState(3597);
25682 					functionOption();
25683 					}
25684 					}
25685 					setState(3602);
25686 					_errHandler.sync(this);
25687 					_la = _input.LA(1);
25688 				}
25689 				}
25690 			}
25691 
25692 			setState(3606);
25693 			_errHandler.sync(this);
25694 			_la = _input.LA(1);
25695 			if (_la==AS) {
25696 				{
25697 				setState(3605);
25698 				match(AS);
25699 				}
25700 			}
25701 
25702 			setState(3608);
25703 			match(RETURN);
25704 			setState(3610);
25705 			_errHandler.sync(this);
25706 			_la = _input.LA(1);
25707 			if (_la==LP_) {
25708 				{
25709 				setState(3609);
25710 				match(LP_);
25711 				}
25712 			}
25713 
25714 			setState(3612);
25715 			select();
25716 			setState(3614);
25717 			_errHandler.sync(this);
25718 			_la = _input.LA(1);
25719 			if (_la==RP_) {
25720 				{
25721 				setState(3613);
25722 				match(RP_);
25723 				}
25724 			}
25725 
25726 			}
25727 		}
25728 		catch (RecognitionException re) {
25729 			_localctx.exception = re;
25730 			_errHandler.reportError(this, re);
25731 			_errHandler.recover(this, re);
25732 		}
25733 		finally {
25734 			exitRule();
25735 		}
25736 		return _localctx;
25737 	}
25738 
25739 	public static class FuncScalarReturnContext extends ParserRuleContext {
25740 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
25741 		public DataTypeContext dataType() {
25742 			return getRuleContext(DataTypeContext.class,0);
25743 		}
25744 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
25745 		public CompoundStatementContext compoundStatement() {
25746 			return getRuleContext(CompoundStatementContext.class,0);
25747 		}
25748 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
25749 		public ExprContext expr() {
25750 			return getRuleContext(ExprContext.class,0);
25751 		}
25752 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
25753 		public List<FunctionOptionContext> functionOption() {
25754 			return getRuleContexts(FunctionOptionContext.class);
25755 		}
25756 		public FunctionOptionContext functionOption(int i) {
25757 			return getRuleContext(FunctionOptionContext.class,i);
25758 		}
25759 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
25760 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25761 		public TerminalNode COMMA_(int i) {
25762 			return getToken(SQLServerStatementParser.COMMA_, i);
25763 		}
25764 		public FuncScalarReturnContext(ParserRuleContext parent, int invokingState) {
25765 			super(parent, invokingState);
25766 		}
25767 		@Override public int getRuleIndex() { return RULE_funcScalarReturn; }
25768 		@Override
25769 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25770 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncScalarReturn(this);
25771 			else return visitor.visitChildren(this);
25772 		}
25773 	}
25774 
25775 	public final FuncScalarReturnContext funcScalarReturn() throws RecognitionException {
25776 		FuncScalarReturnContext _localctx = new FuncScalarReturnContext(_ctx, getState());
25777 		enterRule(_localctx, 530, RULE_funcScalarReturn);
25778 		int _la;
25779 		try {
25780 			enterOuterAlt(_localctx, 1);
25781 			{
25782 			setState(3616);
25783 			match(RETURNS);
25784 			setState(3617);
25785 			dataType();
25786 			setState(3627);
25787 			_errHandler.sync(this);
25788 			_la = _input.LA(1);
25789 			if (_la==WITH) {
25790 				{
25791 				setState(3618);
25792 				match(WITH);
25793 				setState(3619);
25794 				functionOption();
25795 				setState(3624);
25796 				_errHandler.sync(this);
25797 				_la = _input.LA(1);
25798 				while (_la==COMMA_) {
25799 					{
25800 					{
25801 					setState(3620);
25802 					match(COMMA_);
25803 					setState(3621);
25804 					functionOption();
25805 					}
25806 					}
25807 					setState(3626);
25808 					_errHandler.sync(this);
25809 					_la = _input.LA(1);
25810 				}
25811 				}
25812 			}
25813 
25814 			setState(3630);
25815 			_errHandler.sync(this);
25816 			_la = _input.LA(1);
25817 			if (_la==AS) {
25818 				{
25819 				setState(3629);
25820 				match(AS);
25821 				}
25822 			}
25823 
25824 			setState(3632);
25825 			match(BEGIN);
25826 			setState(3633);
25827 			compoundStatement();
25828 			setState(3634);
25829 			match(RETURN);
25830 			setState(3635);
25831 			expr(0);
25832 			}
25833 		}
25834 		catch (RecognitionException re) {
25835 			_localctx.exception = re;
25836 			_errHandler.reportError(this, re);
25837 			_errHandler.recover(this, re);
25838 		}
25839 		finally {
25840 			exitRule();
25841 		}
25842 		return _localctx;
25843 	}
25844 
25845 	public static class TableTypeDefinitionContext extends ParserRuleContext {
25846 		public ColumnDefinitionContext columnDefinition() {
25847 			return getRuleContext(ColumnDefinitionContext.class,0);
25848 		}
25849 		public ColumnConstraintContext columnConstraint() {
25850 			return getRuleContext(ColumnConstraintContext.class,0);
25851 		}
25852 		public ComputedColumnDefinitionContext computedColumnDefinition() {
25853 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
25854 		}
25855 		public List<TableConstraintContext> tableConstraint() {
25856 			return getRuleContexts(TableConstraintContext.class);
25857 		}
25858 		public TableConstraintContext tableConstraint(int i) {
25859 			return getRuleContext(TableConstraintContext.class,i);
25860 		}
25861 		public TableTypeDefinitionContext(ParserRuleContext parent, int invokingState) {
25862 			super(parent, invokingState);
25863 		}
25864 		@Override public int getRuleIndex() { return RULE_tableTypeDefinition; }
25865 		@Override
25866 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25867 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableTypeDefinition(this);
25868 			else return visitor.visitChildren(this);
25869 		}
25870 	}
25871 
25872 	public final TableTypeDefinitionContext tableTypeDefinition() throws RecognitionException {
25873 		TableTypeDefinitionContext _localctx = new TableTypeDefinitionContext(_ctx, getState());
25874 		enterRule(_localctx, 532, RULE_tableTypeDefinition);
25875 		int _la;
25876 		try {
25877 			enterOuterAlt(_localctx, 1);
25878 			{
25879 			setState(3641);
25880 			_errHandler.sync(this);
25881 			switch ( getInterpreter().adaptivePredict(_input,364,_ctx) ) {
25882 			case 1:
25883 				{
25884 				setState(3637);
25885 				columnDefinition();
25886 				setState(3638);
25887 				columnConstraint();
25888 				}
25889 				break;
25890 			case 2:
25891 				{
25892 				setState(3640);
25893 				computedColumnDefinition();
25894 				}
25895 				break;
25896 			}
25897 			setState(3646);
25898 			_errHandler.sync(this);
25899 			_la = _input.LA(1);
25900 			while (((((_la - 31)) & ~0x3f) == 0 && ((1L << (_la - 31)) & ((1L << (LP_ - 31)) | (1L << (CONSTRAINT - 31)) | (1L << (PRIMARY - 31)) | (1L << (UNIQUE - 31)) | (1L << (FOREIGN - 31)) | (1L << (KEY - 31)))) != 0) || _la==CHECK) {
25901 				{
25902 				{
25903 				setState(3643);
25904 				tableConstraint();
25905 				}
25906 				}
25907 				setState(3648);
25908 				_errHandler.sync(this);
25909 				_la = _input.LA(1);
25910 			}
25911 			}
25912 		}
25913 		catch (RecognitionException re) {
25914 			_localctx.exception = re;
25915 			_errHandler.reportError(this, re);
25916 			_errHandler.recover(this, re);
25917 		}
25918 		finally {
25919 			exitRule();
25920 		}
25921 		return _localctx;
25922 	}
25923 
25924 	public static class CompoundStatementContext extends ParserRuleContext {
25925 		public List<ValidStatementContext> validStatement() {
25926 			return getRuleContexts(ValidStatementContext.class);
25927 		}
25928 		public ValidStatementContext validStatement(int i) {
25929 			return getRuleContext(ValidStatementContext.class,i);
25930 		}
25931 		public CompoundStatementContext(ParserRuleContext parent, int invokingState) {
25932 			super(parent, invokingState);
25933 		}
25934 		@Override public int getRuleIndex() { return RULE_compoundStatement; }
25935 		@Override
25936 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25937 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompoundStatement(this);
25938 			else return visitor.visitChildren(this);
25939 		}
25940 	}
25941 
25942 	public final CompoundStatementContext compoundStatement() throws RecognitionException {
25943 		CompoundStatementContext _localctx = new CompoundStatementContext(_ctx, getState());
25944 		enterRule(_localctx, 534, RULE_compoundStatement);
25945 		int _la;
25946 		try {
25947 			enterOuterAlt(_localctx, 1);
25948 			{
25949 			setState(3652);
25950 			_errHandler.sync(this);
25951 			_la = _input.LA(1);
25952 			while (((((_la - 46)) & ~0x3f) == 0 && ((1L << (_la - 46)) & ((1L << (SELECT - 46)) | (1L << (INSERT - 46)) | (1L << (UPDATE - 46)) | (1L << (DELETE - 46)) | (1L << (CREATE - 46)) | (1L << (ALTER - 46)) | (1L << (DROP - 46)) | (1L << (TRUNCATE - 46)) | (1L << (SET - 46)) | (1L << (WITH - 46)))) != 0) || _la==DECLARE) {
25953 				{
25954 				{
25955 				setState(3649);
25956 				validStatement();
25957 				}
25958 				}
25959 				setState(3654);
25960 				_errHandler.sync(this);
25961 				_la = _input.LA(1);
25962 			}
25963 			}
25964 		}
25965 		catch (RecognitionException re) {
25966 			_localctx.exception = re;
25967 			_errHandler.reportError(this, re);
25968 			_errHandler.recover(this, re);
25969 		}
25970 		finally {
25971 			exitRule();
25972 		}
25973 		return _localctx;
25974 	}
25975 
25976 	public static class FunctionOptionContext extends ParserRuleContext {
25977 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
25978 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
25979 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
25980 		public List<TerminalNode> NULL() { return getTokens(SQLServerStatementParser.NULL); }
25981 		public TerminalNode NULL(int i) {
25982 			return getToken(SQLServerStatementParser.NULL, i);
25983 		}
25984 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
25985 		public TerminalNode INPUT() { return getToken(SQLServerStatementParser.INPUT, 0); }
25986 		public TerminalNode CALLED() { return getToken(SQLServerStatementParser.CALLED, 0); }
25987 		public ExecuteAsClauseContext executeAsClause() {
25988 			return getRuleContext(ExecuteAsClauseContext.class,0);
25989 		}
25990 		public TerminalNode INLINE() { return getToken(SQLServerStatementParser.INLINE, 0); }
25991 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
25992 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
25993 		public FunctionOptionContext(ParserRuleContext parent, int invokingState) {
25994 			super(parent, invokingState);
25995 		}
25996 		@Override public int getRuleIndex() { return RULE_functionOption; }
25997 		@Override
25998 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25999 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionOption(this);
26000 			else return visitor.visitChildren(this);
26001 		}
26002 	}
26003 
26004 	public final FunctionOptionContext functionOption() throws RecognitionException {
26005 		FunctionOptionContext _localctx = new FunctionOptionContext(_ctx, getState());
26006 		enterRule(_localctx, 536, RULE_functionOption);
26007 		int _la;
26008 		try {
26009 			setState(3680);
26010 			_errHandler.sync(this);
26011 			switch ( getInterpreter().adaptivePredict(_input,372,_ctx) ) {
26012 			case 1:
26013 				enterOuterAlt(_localctx, 1);
26014 				{
26015 				setState(3656);
26016 				_errHandler.sync(this);
26017 				_la = _input.LA(1);
26018 				if (_la==ENCRYPTION) {
26019 					{
26020 					setState(3655);
26021 					match(ENCRYPTION);
26022 					}
26023 				}
26024 
26025 				}
26026 				break;
26027 			case 2:
26028 				enterOuterAlt(_localctx, 2);
26029 				{
26030 				setState(3659);
26031 				_errHandler.sync(this);
26032 				_la = _input.LA(1);
26033 				if (_la==SCHEMABINDING) {
26034 					{
26035 					setState(3658);
26036 					match(SCHEMABINDING);
26037 					}
26038 				}
26039 
26040 				}
26041 				break;
26042 			case 3:
26043 				enterOuterAlt(_localctx, 3);
26044 				{
26045 				setState(3670);
26046 				_errHandler.sync(this);
26047 				switch (_input.LA(1)) {
26048 				case RETURNS:
26049 					{
26050 					setState(3661);
26051 					match(RETURNS);
26052 					setState(3662);
26053 					match(NULL);
26054 					setState(3663);
26055 					match(ON);
26056 					setState(3664);
26057 					match(NULL);
26058 					setState(3665);
26059 					match(INPUT);
26060 					}
26061 					break;
26062 				case CALLED:
26063 					{
26064 					setState(3666);
26065 					match(CALLED);
26066 					setState(3667);
26067 					match(ON);
26068 					setState(3668);
26069 					match(NULL);
26070 					setState(3669);
26071 					match(INPUT);
26072 					}
26073 					break;
26074 				case COMMA_:
26075 				case AS:
26076 				case BEGIN:
26077 				case RETURN:
26078 					break;
26079 				default:
26080 					break;
26081 				}
26082 				}
26083 				break;
26084 			case 4:
26085 				enterOuterAlt(_localctx, 4);
26086 				{
26087 				setState(3673);
26088 				_errHandler.sync(this);
26089 				_la = _input.LA(1);
26090 				if (_la==EXECUTE || _la==EXEC) {
26091 					{
26092 					setState(3672);
26093 					executeAsClause();
26094 					}
26095 				}
26096 
26097 				}
26098 				break;
26099 			case 5:
26100 				enterOuterAlt(_localctx, 5);
26101 				{
26102 				setState(3678);
26103 				_errHandler.sync(this);
26104 				_la = _input.LA(1);
26105 				if (_la==INLINE) {
26106 					{
26107 					setState(3675);
26108 					match(INLINE);
26109 					setState(3676);
26110 					match(EQ_);
26111 					setState(3677);
26112 					_la = _input.LA(1);
26113 					if ( !(_la==ON || _la==OFF) ) {
26114 					_errHandler.recoverInline(this);
26115 					}
26116 					else {
26117 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
26118 						_errHandler.reportMatch(this);
26119 						consume();
26120 					}
26121 					}
26122 				}
26123 
26124 				}
26125 				break;
26126 			}
26127 		}
26128 		catch (RecognitionException re) {
26129 			_localctx.exception = re;
26130 			_errHandler.reportError(this, re);
26131 			_errHandler.recover(this, re);
26132 		}
26133 		finally {
26134 			exitRule();
26135 		}
26136 		return _localctx;
26137 	}
26138 
26139 	public static class ValidStatementContext extends ParserRuleContext {
26140 		public CreateTableContext createTable() {
26141 			return getRuleContext(CreateTableContext.class,0);
26142 		}
26143 		public AlterTableContext alterTable() {
26144 			return getRuleContext(AlterTableContext.class,0);
26145 		}
26146 		public DropTableContext dropTable() {
26147 			return getRuleContext(DropTableContext.class,0);
26148 		}
26149 		public TruncateTableContext truncateTable() {
26150 			return getRuleContext(TruncateTableContext.class,0);
26151 		}
26152 		public InsertContext insert() {
26153 			return getRuleContext(InsertContext.class,0);
26154 		}
26155 		public UpdateContext update() {
26156 			return getRuleContext(UpdateContext.class,0);
26157 		}
26158 		public DeleteContext delete() {
26159 			return getRuleContext(DeleteContext.class,0);
26160 		}
26161 		public SelectContext select() {
26162 			return getRuleContext(SelectContext.class,0);
26163 		}
26164 		public SetVariableContext setVariable() {
26165 			return getRuleContext(SetVariableContext.class,0);
26166 		}
26167 		public DeclareVariableContext declareVariable() {
26168 			return getRuleContext(DeclareVariableContext.class,0);
26169 		}
26170 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
26171 		public ValidStatementContext(ParserRuleContext parent, int invokingState) {
26172 			super(parent, invokingState);
26173 		}
26174 		@Override public int getRuleIndex() { return RULE_validStatement; }
26175 		@Override
26176 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26177 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitValidStatement(this);
26178 			else return visitor.visitChildren(this);
26179 		}
26180 	}
26181 
26182 	public final ValidStatementContext validStatement() throws RecognitionException {
26183 		ValidStatementContext _localctx = new ValidStatementContext(_ctx, getState());
26184 		enterRule(_localctx, 538, RULE_validStatement);
26185 		try {
26186 			enterOuterAlt(_localctx, 1);
26187 			{
26188 			setState(3692);
26189 			_errHandler.sync(this);
26190 			switch ( getInterpreter().adaptivePredict(_input,373,_ctx) ) {
26191 			case 1:
26192 				{
26193 				setState(3682);
26194 				createTable();
26195 				}
26196 				break;
26197 			case 2:
26198 				{
26199 				setState(3683);
26200 				alterTable();
26201 				}
26202 				break;
26203 			case 3:
26204 				{
26205 				setState(3684);
26206 				dropTable();
26207 				}
26208 				break;
26209 			case 4:
26210 				{
26211 				setState(3685);
26212 				truncateTable();
26213 				}
26214 				break;
26215 			case 5:
26216 				{
26217 				setState(3686);
26218 				insert();
26219 				}
26220 				break;
26221 			case 6:
26222 				{
26223 				setState(3687);
26224 				update();
26225 				}
26226 				break;
26227 			case 7:
26228 				{
26229 				setState(3688);
26230 				delete();
26231 				}
26232 				break;
26233 			case 8:
26234 				{
26235 				setState(3689);
26236 				select();
26237 				}
26238 				break;
26239 			case 9:
26240 				{
26241 				setState(3690);
26242 				setVariable();
26243 				}
26244 				break;
26245 			case 10:
26246 				{
26247 				setState(3691);
26248 				declareVariable();
26249 				}
26250 				break;
26251 			}
26252 			setState(3695);
26253 			_errHandler.sync(this);
26254 			switch ( getInterpreter().adaptivePredict(_input,374,_ctx) ) {
26255 			case 1:
26256 				{
26257 				setState(3694);
26258 				match(SEMI_);
26259 				}
26260 				break;
26261 			}
26262 			}
26263 		}
26264 		catch (RecognitionException re) {
26265 			_localctx.exception = re;
26266 			_errHandler.reportError(this, re);
26267 			_errHandler.recover(this, re);
26268 		}
26269 		finally {
26270 			exitRule();
26271 		}
26272 		return _localctx;
26273 	}
26274 
26275 	public static class ProcParametersContext extends ParserRuleContext {
26276 		public List<ProcParameterContext> procParameter() {
26277 			return getRuleContexts(ProcParameterContext.class);
26278 		}
26279 		public ProcParameterContext procParameter(int i) {
26280 			return getRuleContext(ProcParameterContext.class,i);
26281 		}
26282 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26283 		public TerminalNode COMMA_(int i) {
26284 			return getToken(SQLServerStatementParser.COMMA_, i);
26285 		}
26286 		public ProcParametersContext(ParserRuleContext parent, int invokingState) {
26287 			super(parent, invokingState);
26288 		}
26289 		@Override public int getRuleIndex() { return RULE_procParameters; }
26290 		@Override
26291 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26292 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcParameters(this);
26293 			else return visitor.visitChildren(this);
26294 		}
26295 	}
26296 
26297 	public final ProcParametersContext procParameters() throws RecognitionException {
26298 		ProcParametersContext _localctx = new ProcParametersContext(_ctx, getState());
26299 		enterRule(_localctx, 540, RULE_procParameters);
26300 		int _la;
26301 		try {
26302 			enterOuterAlt(_localctx, 1);
26303 			{
26304 			setState(3705);
26305 			_errHandler.sync(this);
26306 			_la = _input.LA(1);
26307 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (GROUP - 53)))) != 0) || ((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (LIMIT - 121)) | (1L << (OFFSET - 121)) | (1L << (SAVEPOINT - 121)) | (1L << (BOOLEAN - 121)) | (1L << (ARRAY - 121)) | (1L << (DATE - 121)) | (1L << (LOCALTIME - 121)) | (1L << (LOCALTIMESTAMP - 121)) | (1L << (QUARTER - 121)) | (1L << (WEEK - 121)) | (1L << (DAY - 121)) | (1L << (MICROSECOND - 121)) | (1L << (MAX - 121)) | (1L << (MIN - 121)) | (1L << (SUM - 121)) | (1L << (COUNT - 121)) | (1L << (AVG - 121)) | (1L << (ENABLE - 121)) | (1L << (DISABLE - 121)) | (1L << (INSTANCE - 121)) | (1L << (DO - 121)) | (1L << (DEFINER - 121)) | (1L << (SQL - 121)) | (1L << (CASCADED - 121)) | (1L << (LOCAL - 121)) | (1L << (NEXT - 121)) | (1L << (NAME - 121)) | (1L << (INTEGER - 121)) | (1L << (TYPE - 121)))) != 0) || ((((_la - 201)) & ~0x3f) == 0 && ((1L << (_la - 201)) & ((1L << (READ_ONLY - 201)) | (1L << (DATABASE - 201)) | (1L << (DATEPART - 201)) | (1L << (PASSWORD - 201)) | (1L << (BINARY - 201)) | (1L << (HIDDEN_ - 201)) | (1L << (MOD - 201)) | (1L << (PARTITION - 201)) | (1L << (PARTITIONS - 201)) | (1L << (TOP - 201)) | (1L << (ROW - 201)) | (1L << (ROWS - 201)) | (1L << (XOR - 201)) | (1L << (ALWAYS - 201)) | (1L << (ROLE - 201)) | (1L << (START - 201)) | (1L << (ALGORITHM - 201)) | (1L << (AUTO - 201)) | (1L << (BLOCKERS - 201)) | (1L << (CLUSTERED - 201)) | (1L << (NONCLUSTERED - 201)) | (1L << (COLUMNSTORE - 201)) | (1L << (CONTENT - 201)) | (1L << (YEARS - 201)) | (1L << (MONTHS - 201)) | (1L << (WEEKS - 201)) | (1L << (DAYS - 201)) | (1L << (MINUTES - 201)) | (1L << (DENY - 201)) | (1L << (DETERMINISTIC - 201)) | (1L << (DISTRIBUTION - 201)) | (1L << (DOCUMENT - 201)) | (1L << (DURABILITY - 201)) | (1L << (ENCRYPTED - 201)) | (1L << (FILESTREAM - 201)) | (1L << (FILETABLE - 201)) | (1L << (FILLFACTOR - 201)) | (1L << (FOLLOWING - 201)) | (1L << (HASH - 201)) | (1L << (HEAP - 201)))) != 0) || ((((_la - 266)) & ~0x3f) == 0 && ((1L << (_la - 266)) & ((1L << (INBOUND - 266)) | (1L << (OUTBOUND - 266)) | (1L << (UNBOUNDED - 266)) | (1L << (INFINITE - 266)) | (1L << (LOGIN - 266)) | (1L << (MASKED - 266)) | (1L << (MAXDOP - 266)) | (1L << (MOVE - 266)) | (1L << (NOCHECK - 266)) | (1L << (OBJECT - 266)) | (1L << (OFF - 266)) | (1L << (ONLINE - 266)) | (1L << (OVER - 266)) | (1L << (PAGE - 266)) | (1L << (PAUSED - 266)) | (1L << (PERIOD - 266)) | (1L << (PERSISTED - 266)) | (1L << (PRECEDING - 266)) | (1L << (RANDOMIZED - 266)) | (1L << (RANGE - 266)) | (1L << (REBUILD - 266)) | (1L << (REPLICATE - 266)) | (1L << (REPLICATION - 266)) | (1L << (RESUMABLE - 266)) | (1L << (ROWGUIDCOL - 266)) | (1L << (SAVE - 266)) | (1L << (SELF - 266)) | (1L << (SPARSE - 266)) | (1L << (SWITCH - 266)) | (1L << (TRAN - 266)) | (1L << (TRANCOUNT - 266)) | (1L << (CONTROL - 266)) | (1L << (CONCAT - 266)) | (1L << (TAKE - 266)) | (1L << (OWNERSHIP - 266)) | (1L << (DEFINITION - 266)) | (1L << (APPLICATION - 266)) | (1L << (ASSEMBLY - 266)) | (1L << (SYMMETRIC - 266)) | (1L << (ASYMMETRIC - 266)) | (1L << (SERVER - 266)) | (1L << (RECEIVE - 266)) | (1L << (CHANGE - 266)) | (1L << (TRACE - 266)) | (1L << (TRACKING - 266)) | (1L << (RESOURCES - 266)) | (1L << (SETTINGS - 266)) | (1L << (STATE - 266)) | (1L << (AVAILABILITY - 266)) | (1L << (CREDENTIAL - 266)) | (1L << (ENDPOINT - 266)) | (1L << (EVENT - 266)) | (1L << (NOTIFICATION - 266)) | (1L << (LINKED - 266)) | (1L << (AUDIT - 266)) | (1L << (DDL - 266)))) != 0) || ((((_la - 330)) & ~0x3f) == 0 && ((1L << (_la - 330)) & ((1L << (XML - 330)) | (1L << (IMPERSONATE - 330)) | (1L << (SECURABLES - 330)) | (1L << (AUTHENTICATE - 330)) | (1L << (EXTERNAL - 330)) | (1L << (ACCESS - 330)) | (1L << (ADMINISTER - 330)) | (1L << (BULK - 330)) | (1L << (OPERATIONS - 330)) | (1L << (UNSAFE - 330)) | (1L << (SHUTDOWN - 330)) | (1L << (SCOPED - 330)) | (1L << (CONFIGURATION - 330)) | (1L << (DATASPACE - 330)) | (1L << (SERVICE - 330)) | (1L << (CERTIFICATE - 330)) | (1L << (CONTRACT - 330)) | (1L << (ENCRYPTION - 330)) | (1L << (MASTER - 330)) | (1L << (DATA - 330)) | (1L << (SOURCE - 330)) | (1L << (FILE - 330)) | (1L << (FORMAT - 330)) | (1L << (LIBRARY - 330)) | (1L << (FULLTEXT - 330)) | (1L << (MASK - 330)) | (1L << (UNMASK - 330)) | (1L << (MESSAGE - 330)) | (1L << (REMOTE - 330)) | (1L << (BINDING - 330)) | (1L << (ROUTE - 330)) | (1L << (SECURITY - 330)) | (1L << (POLICY - 330)) | (1L << (AGGREGATE - 330)) | (1L << (QUEUE - 330)) | (1L << (RULE - 330)) | (1L << (SYNONYM - 330)) | (1L << (COLLECTION - 330)) | (1L << (SCRIPT - 330)) | (1L << (KILL - 330)) | (1L << (BACKUP - 330)) | (1L << (LOG - 330)) | (1L << (SHOWPLAN - 330)) | (1L << (SUBSCRIBE - 330)) | (1L << (QUERY - 330)) | (1L << (NOTIFICATIONS - 330)) | (1L << (CHECKPOINT - 330)) | (1L << (SEQUENCE - 330)) | (1L << (ABORT_AFTER_WAIT - 330)) | (1L << (ALLOW_PAGE_LOCKS - 330)) | (1L << (ALLOW_ROW_LOCKS - 330)) | (1L << (ALL_SPARSE_COLUMNS - 330)) | (1L << (BUCKET_COUNT - 330)) | (1L << (COLUMNSTORE_ARCHIVE - 330)) | (1L << (COLUMN_ENCRYPTION_KEY - 330)) | (1L << (COLUMN_SET - 330)) | (1L << (COMPRESSION_DELAY - 330)) | (1L << (DATABASE_DEAULT - 330)) | (1L << (DATA_COMPRESSION - 330)) | (1L << (DATA_CONSISTENCY_CHECK - 330)) | (1L << (ENCRYPTION_TYPE - 330)) | (1L << (SYSTEM_TIME - 330)) | (1L << (SYSTEM_VERSIONING - 330)) | (1L << (TEXTIMAGE_ON - 330)))) != 0) || ((((_la - 394)) & ~0x3f) == 0 && ((1L << (_la - 394)) & ((1L << (WAIT_AT_LOW_PRIORITY - 394)) | (1L << (STATISTICS_INCREMENTAL - 394)) | (1L << (STATISTICS_NORECOMPUTE - 394)) | (1L << (ROUND_ROBIN - 394)) | (1L << (SCHEMA_AND_DATA - 394)) | (1L << (SCHEMA_ONLY - 394)) | (1L << (SORT_IN_TEMPDB - 394)) | (1L << (IGNORE_DUP_KEY - 394)) | (1L << (IMPLICIT_TRANSACTIONS - 394)) | (1L << (MAX_DURATION - 394)) | (1L << (MEMORY_OPTIMIZED - 394)) | (1L << (MIGRATION_STATE - 394)) | (1L << (PAD_INDEX - 394)) | (1L << (REMOTE_DATA_ARCHIVE - 394)) | (1L << (FILESTREAM_ON - 394)) | (1L << (FILETABLE_COLLATE_FILENAME - 394)) | (1L << (FILETABLE_DIRECTORY - 394)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILTER_PREDICATE - 394)) | (1L << (HISTORY_RETENTION_PERIOD - 394)) | (1L << (HISTORY_TABLE - 394)) | (1L << (LOCK_ESCALATION - 394)) | (1L << (DROP_EXISTING - 394)) | (1L << (ROW_NUMBER - 394)) | (1L << (FIRST - 394)) | (1L << (DATETIME2 - 394)) | (1L << (OUTPUT - 394)) | (1L << (INSERTED - 394)) | (1L << (DELETED - 394)))) != 0) || ((((_la - 478)) & ~0x3f) == 0 && ((1L << (_la - 478)) & ((1L << (FILENAME - 478)) | (1L << (MAXSIZE - 478)) | (1L << (FILEGROWTH - 478)) | (1L << (UNLIMITED - 478)) | (1L << (KB - 478)) | (1L << (MB - 478)) | (1L << (GB - 478)) | (1L << (TB - 478)) | (1L << (MEMORY_OPTIMIZED_DATA - 478)) | (1L << (FILEGROUP - 478)) | (1L << (NON_TRANSACTED_ACCESS - 478)) | (1L << (DB_CHAINING - 478)) | (1L << (TRUSTWORTHY - 478)) | (1L << (FORWARD_ONLY - 478)) | (1L << (KEYSET - 478)) | (1L << (FAST_FORWARD - 478)) | (1L << (SCROLL_LOCKS - 478)) | (1L << (OPTIMISTIC - 478)) | (1L << (TYPE_WARNING - 478)) | (1L << (SCHEMABINDING - 478)) | (1L << (CALLER - 478)) | (1L << (OWNER - 478)) | (1L << (SNAPSHOT - 478)) | (1L << (REPEATABLE - 478)) | (1L << (SERIALIZABLE - 478)) | (1L << (NATIVE_COMPILATION - 478)) | (1L << (VIEW_METADATA - 478)) | (1L << (INSTEAD - 478)) | (1L << (APPEND - 478)) | (1L << (INCREMENT - 478)) | (1L << (CACHE - 478)) | (1L << (MINVALUE - 478)) | (1L << (MAXVALUE - 478)) | (1L << (RESTART - 478)) | (1L << (LOB_COMPACTION - 478)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 478)) | (1L << (REORGANIZE - 478)) | (1L << (RESUME - 478)) | (1L << (PAUSE - 478)) | (1L << (ABORT - 478)))) != 0) || ((((_la - 544)) & ~0x3f) == 0 && ((1L << (_la - 544)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 544)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 544)) | (1L << (IMMEDIATE - 544)) | (1L << (NO_WAIT - 544)) | (1L << (TARGET_RECOVERY_TIME - 544)) | (1L << (SECONDS - 544)) | (1L << (HONOR_BROKER_PRIORITY - 544)) | (1L << (ERROR_BROKER_CONVERSATIONS - 544)) | (1L << (NEW_BROKER - 544)) | (1L << (DISABLE_BROKER - 544)) | (1L << (ENABLE_BROKER - 544)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 544)) | (1L << (READ_COMMITTED_SNAPSHOT - 544)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 544)) | (1L << (RECURSIVE_TRIGGERS - 544)) | (1L << (QUOTED_IDENTIFIER - 544)) | (1L << (NUMERIC_ROUNDABORT - 544)) | (1L << (CONCAT_NULL_YIELDS_NULL - 544)) | (1L << (COMPATIBILITY_LEVEL - 544)) | (1L << (ARITHABORT - 544)) | (1L << (ANSI_WARNINGS - 544)) | (1L << (ANSI_PADDING - 544)) | (1L << (ANSI_NULLS - 544)) | (1L << (ANSI_NULL_DEFAULT - 544)) | (1L << (PAGE_VERIFY - 544)) | (1L << (CHECKSUM - 544)) | (1L << (TORN_PAGE_DETECTION - 544)) | (1L << (BULK_LOGGED - 544)) | (1L << (RECOVERY - 544)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 544)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 544)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 544)) | (1L << (EXECUTION_COUNT - 544)) | (1L << (QUERY_CAPTURE_POLICY - 544)) | (1L << (WAIT_STATS_CAPTURE_MODE - 544)) | (1L << (MAX_PLANS_PER_QUERY - 544)) | (1L << (QUERY_CAPTURE_MODE - 544)) | (1L << (SIZE_BASED_CLEANUP_MODE - 544)) | (1L << (INTERVAL_LENGTH_MINUTES - 544)) | (1L << (MAX_STORAGE_SIZE_MB - 544)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 544)) | (1L << (CLEANUP_POLICY - 544)) | (1L << (CUSTOM - 544)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 544)) | (1L << (OPERATION_MODE - 544)) | (1L << (QUERY_STORE - 544)) | (1L << (CURSOR_DEFAULT - 544)) | (1L << (GLOBAL - 544)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 544)) | (1L << (HOURS - 544)) | (1L << (CHANGE_RETENTION - 544)) | (1L << (AUTO_CLEANUP - 544)) | (1L << (CHANGE_TRACKING - 544)) | (1L << (AUTOMATIC_TUNING - 544)) | (1L << (FORCE_LAST_GOOD_PLAN - 544)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 544)) | (1L << (AUTO_UPDATE_STATISTICS - 544)) | (1L << (AUTO_SHRINK - 544)) | (1L << (AUTO_CREATE_STATISTICS - 544)) | (1L << (INCREMENTAL - 544)) | (1L << (AUTO_CLOSE - 544)) | (1L << (DATA_RETENTION - 544)) | (1L << (TEMPORAL_HISTORY_RETENTION - 544)) | (1L << (EDITION - 544)))) != 0) || ((((_la - 608)) & ~0x3f) == 0 && ((1L << (_la - 608)) & ((1L << (MIXED_PAGE_ALLOCATION - 608)) | (1L << (DISABLED - 608)) | (1L << (ALLOWED - 608)) | (1L << (HADR - 608)) | (1L << (MULTI_USER - 608)) | (1L << (RESTRICTED_USER - 608)) | (1L << (SINGLE_USER - 608)) | (1L << (OFFLINE - 608)) | (1L << (EMERGENCY - 608)) | (1L << (SUSPEND - 608)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 608)) | (1L << (ELASTIC_POOL - 608)) | (1L << (SERVICE_OBJECTIVE - 608)) | (1L << (DATABASE_NAME - 608)) | (1L << (ALLOW_CONNECTIONS - 608)) | (1L << (GEO - 608)) | (1L << (NAMED - 608)) | (1L << (DATEFIRST - 608)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 608)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 608)) | (1L << (SECONDARY - 608)) | (1L << (FAILOVER - 608)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 608)) | (1L << (DEFAULT_LANGUAGE - 608)) | (1L << (INLINE - 608)) | (1L << (NESTED_TRIGGERS - 608)) | (1L << (TRANSFORM_NOISE_WORDS - 608)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 608)) | (1L << (PERSISTENT_LOG_BUFFER - 608)) | (1L << (DIRECTORY_NAME - 608)) | (1L << (DATEFORMAT - 608)) | (1L << (DELAYED_DURABILITY - 608)) | (1L << (AUTHORIZATION - 608)) | (1L << (TRANSFER - 608)) | (1L << (SEARCH - 608)) | (1L << (MEMBER - 608)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
26308 				{
26309 				setState(3697);
26310 				procParameter();
26311 				setState(3702);
26312 				_errHandler.sync(this);
26313 				_la = _input.LA(1);
26314 				while (_la==COMMA_) {
26315 					{
26316 					{
26317 					setState(3698);
26318 					match(COMMA_);
26319 					setState(3699);
26320 					procParameter();
26321 					}
26322 					}
26323 					setState(3704);
26324 					_errHandler.sync(this);
26325 					_la = _input.LA(1);
26326 				}
26327 				}
26328 			}
26329 
26330 			}
26331 		}
26332 		catch (RecognitionException re) {
26333 			_localctx.exception = re;
26334 			_errHandler.reportError(this, re);
26335 			_errHandler.recover(this, re);
26336 		}
26337 		finally {
26338 			exitRule();
26339 		}
26340 		return _localctx;
26341 	}
26342 
26343 	public static class ProcParameterContext extends ParserRuleContext {
26344 		public VariableContext variable() {
26345 			return getRuleContext(VariableContext.class,0);
26346 		}
26347 		public TerminalNode VARYING() { return getToken(SQLServerStatementParser.VARYING, 0); }
26348 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
26349 		public LiteralsContext literals() {
26350 			return getRuleContext(LiteralsContext.class,0);
26351 		}
26352 		public TerminalNode OUT() { return getToken(SQLServerStatementParser.OUT, 0); }
26353 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
26354 		public TerminalNode READONLY() { return getToken(SQLServerStatementParser.READONLY, 0); }
26355 		public ProcParameterContext(ParserRuleContext parent, int invokingState) {
26356 			super(parent, invokingState);
26357 		}
26358 		@Override public int getRuleIndex() { return RULE_procParameter; }
26359 		@Override
26360 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26361 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcParameter(this);
26362 			else return visitor.visitChildren(this);
26363 		}
26364 	}
26365 
26366 	public final ProcParameterContext procParameter() throws RecognitionException {
26367 		ProcParameterContext _localctx = new ProcParameterContext(_ctx, getState());
26368 		enterRule(_localctx, 542, RULE_procParameter);
26369 		int _la;
26370 		try {
26371 			enterOuterAlt(_localctx, 1);
26372 			{
26373 			setState(3707);
26374 			variable();
26375 			setState(3709);
26376 			_errHandler.sync(this);
26377 			_la = _input.LA(1);
26378 			if (_la==VARYING) {
26379 				{
26380 				setState(3708);
26381 				match(VARYING);
26382 				}
26383 			}
26384 
26385 			setState(3713);
26386 			_errHandler.sync(this);
26387 			_la = _input.LA(1);
26388 			if (_la==EQ_) {
26389 				{
26390 				setState(3711);
26391 				match(EQ_);
26392 				setState(3712);
26393 				literals();
26394 				}
26395 			}
26396 
26397 			setState(3716);
26398 			_errHandler.sync(this);
26399 			_la = _input.LA(1);
26400 			if (_la==READONLY || _la==OUTPUT || _la==OUT) {
26401 				{
26402 				setState(3715);
26403 				_la = _input.LA(1);
26404 				if ( !(_la==READONLY || _la==OUTPUT || _la==OUT) ) {
26405 				_errHandler.recoverInline(this);
26406 				}
26407 				else {
26408 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
26409 					_errHandler.reportMatch(this);
26410 					consume();
26411 				}
26412 				}
26413 			}
26414 
26415 			}
26416 		}
26417 		catch (RecognitionException re) {
26418 			_localctx.exception = re;
26419 			_errHandler.reportError(this, re);
26420 			_errHandler.recover(this, re);
26421 		}
26422 		finally {
26423 			exitRule();
26424 		}
26425 		return _localctx;
26426 	}
26427 
26428 	public static class CreateOrAlterProcClauseContext extends ParserRuleContext {
26429 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
26430 		public ProcAsClauseContext procAsClause() {
26431 			return getRuleContext(ProcAsClauseContext.class,0);
26432 		}
26433 		public WithCreateProcOptionContext withCreateProcOption() {
26434 			return getRuleContext(WithCreateProcOptionContext.class,0);
26435 		}
26436 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
26437 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
26438 		public CreateOrAlterProcClauseContext(ParserRuleContext parent, int invokingState) {
26439 			super(parent, invokingState);
26440 		}
26441 		@Override public int getRuleIndex() { return RULE_createOrAlterProcClause; }
26442 		@Override
26443 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26444 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterProcClause(this);
26445 			else return visitor.visitChildren(this);
26446 		}
26447 	}
26448 
26449 	public final CreateOrAlterProcClauseContext createOrAlterProcClause() throws RecognitionException {
26450 		CreateOrAlterProcClauseContext _localctx = new CreateOrAlterProcClauseContext(_ctx, getState());
26451 		enterRule(_localctx, 544, RULE_createOrAlterProcClause);
26452 		int _la;
26453 		try {
26454 			enterOuterAlt(_localctx, 1);
26455 			{
26456 			setState(3719);
26457 			_errHandler.sync(this);
26458 			_la = _input.LA(1);
26459 			if (_la==WITH) {
26460 				{
26461 				setState(3718);
26462 				withCreateProcOption();
26463 				}
26464 			}
26465 
26466 			setState(3723);
26467 			_errHandler.sync(this);
26468 			_la = _input.LA(1);
26469 			if (_la==FOR) {
26470 				{
26471 				setState(3721);
26472 				match(FOR);
26473 				setState(3722);
26474 				match(REPLICATION);
26475 				}
26476 			}
26477 
26478 			setState(3725);
26479 			match(AS);
26480 			setState(3726);
26481 			procAsClause();
26482 			}
26483 		}
26484 		catch (RecognitionException re) {
26485 			_localctx.exception = re;
26486 			_errHandler.reportError(this, re);
26487 			_errHandler.recover(this, re);
26488 		}
26489 		finally {
26490 			exitRule();
26491 		}
26492 		return _localctx;
26493 	}
26494 
26495 	public static class WithCreateProcOptionContext extends ParserRuleContext {
26496 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
26497 		public List<ProcOptionContext> procOption() {
26498 			return getRuleContexts(ProcOptionContext.class);
26499 		}
26500 		public ProcOptionContext procOption(int i) {
26501 			return getRuleContext(ProcOptionContext.class,i);
26502 		}
26503 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26504 		public TerminalNode COMMA_(int i) {
26505 			return getToken(SQLServerStatementParser.COMMA_, i);
26506 		}
26507 		public WithCreateProcOptionContext(ParserRuleContext parent, int invokingState) {
26508 			super(parent, invokingState);
26509 		}
26510 		@Override public int getRuleIndex() { return RULE_withCreateProcOption; }
26511 		@Override
26512 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26513 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithCreateProcOption(this);
26514 			else return visitor.visitChildren(this);
26515 		}
26516 	}
26517 
26518 	public final WithCreateProcOptionContext withCreateProcOption() throws RecognitionException {
26519 		WithCreateProcOptionContext _localctx = new WithCreateProcOptionContext(_ctx, getState());
26520 		enterRule(_localctx, 546, RULE_withCreateProcOption);
26521 		int _la;
26522 		try {
26523 			enterOuterAlt(_localctx, 1);
26524 			{
26525 			setState(3728);
26526 			match(WITH);
26527 			setState(3737);
26528 			_errHandler.sync(this);
26529 			_la = _input.LA(1);
26530 			if (((((_la - 299)) & ~0x3f) == 0 && ((1L << (_la - 299)) & ((1L << (EXECUTE - 299)) | (1L << (EXEC - 299)) | (1L << (ENCRYPTION - 299)))) != 0) || ((((_la - 470)) & ~0x3f) == 0 && ((1L << (_la - 470)) & ((1L << (RECOMPILE - 470)) | (1L << (SCHEMABINDING - 470)) | (1L << (NATIVE_COMPILATION - 470)))) != 0)) {
26531 				{
26532 				setState(3729);
26533 				procOption();
26534 				setState(3734);
26535 				_errHandler.sync(this);
26536 				_la = _input.LA(1);
26537 				while (_la==COMMA_) {
26538 					{
26539 					{
26540 					setState(3730);
26541 					match(COMMA_);
26542 					setState(3731);
26543 					procOption();
26544 					}
26545 					}
26546 					setState(3736);
26547 					_errHandler.sync(this);
26548 					_la = _input.LA(1);
26549 				}
26550 				}
26551 			}
26552 
26553 			}
26554 		}
26555 		catch (RecognitionException re) {
26556 			_localctx.exception = re;
26557 			_errHandler.reportError(this, re);
26558 			_errHandler.recover(this, re);
26559 		}
26560 		finally {
26561 			exitRule();
26562 		}
26563 		return _localctx;
26564 	}
26565 
26566 	public static class ProcOptionContext extends ParserRuleContext {
26567 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
26568 		public TerminalNode RECOMPILE() { return getToken(SQLServerStatementParser.RECOMPILE, 0); }
26569 		public ExecuteAsClauseContext executeAsClause() {
26570 			return getRuleContext(ExecuteAsClauseContext.class,0);
26571 		}
26572 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
26573 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
26574 		public ProcOptionContext(ParserRuleContext parent, int invokingState) {
26575 			super(parent, invokingState);
26576 		}
26577 		@Override public int getRuleIndex() { return RULE_procOption; }
26578 		@Override
26579 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26580 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcOption(this);
26581 			else return visitor.visitChildren(this);
26582 		}
26583 	}
26584 
26585 	public final ProcOptionContext procOption() throws RecognitionException {
26586 		ProcOptionContext _localctx = new ProcOptionContext(_ctx, getState());
26587 		enterRule(_localctx, 548, RULE_procOption);
26588 		try {
26589 			setState(3744);
26590 			_errHandler.sync(this);
26591 			switch (_input.LA(1)) {
26592 			case ENCRYPTION:
26593 				enterOuterAlt(_localctx, 1);
26594 				{
26595 				setState(3739);
26596 				match(ENCRYPTION);
26597 				}
26598 				break;
26599 			case RECOMPILE:
26600 				enterOuterAlt(_localctx, 2);
26601 				{
26602 				setState(3740);
26603 				match(RECOMPILE);
26604 				}
26605 				break;
26606 			case EXECUTE:
26607 			case EXEC:
26608 				enterOuterAlt(_localctx, 3);
26609 				{
26610 				setState(3741);
26611 				executeAsClause();
26612 				}
26613 				break;
26614 			case NATIVE_COMPILATION:
26615 				enterOuterAlt(_localctx, 4);
26616 				{
26617 				setState(3742);
26618 				match(NATIVE_COMPILATION);
26619 				}
26620 				break;
26621 			case SCHEMABINDING:
26622 				enterOuterAlt(_localctx, 5);
26623 				{
26624 				setState(3743);
26625 				match(SCHEMABINDING);
26626 				}
26627 				break;
26628 			default:
26629 				throw new NoViableAltException(this);
26630 			}
26631 		}
26632 		catch (RecognitionException re) {
26633 			_localctx.exception = re;
26634 			_errHandler.reportError(this, re);
26635 			_errHandler.recover(this, re);
26636 		}
26637 		finally {
26638 			exitRule();
26639 		}
26640 		return _localctx;
26641 	}
26642 
26643 	public static class ProcAsClauseContext extends ParserRuleContext {
26644 		public CompoundStatementContext compoundStatement() {
26645 			return getRuleContext(CompoundStatementContext.class,0);
26646 		}
26647 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
26648 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
26649 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
26650 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
26651 		public NameContext name() {
26652 			return getRuleContext(NameContext.class,0);
26653 		}
26654 		public List<OwnerContext> owner() {
26655 			return getRuleContexts(OwnerContext.class);
26656 		}
26657 		public OwnerContext owner(int i) {
26658 			return getRuleContext(OwnerContext.class,i);
26659 		}
26660 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
26661 		public TerminalNode DOT_(int i) {
26662 			return getToken(SQLServerStatementParser.DOT_, i);
26663 		}
26664 		public TerminalNode ATOMIC() { return getToken(SQLServerStatementParser.ATOMIC, 0); }
26665 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
26666 		public List<ProcSetOptionContext> procSetOption() {
26667 			return getRuleContexts(ProcSetOptionContext.class);
26668 		}
26669 		public ProcSetOptionContext procSetOption(int i) {
26670 			return getRuleContext(ProcSetOptionContext.class,i);
26671 		}
26672 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26673 		public TerminalNode COMMA_(int i) {
26674 			return getToken(SQLServerStatementParser.COMMA_, i);
26675 		}
26676 		public ProcAsClauseContext(ParserRuleContext parent, int invokingState) {
26677 			super(parent, invokingState);
26678 		}
26679 		@Override public int getRuleIndex() { return RULE_procAsClause; }
26680 		@Override
26681 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26682 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcAsClause(this);
26683 			else return visitor.visitChildren(this);
26684 		}
26685 	}
26686 
26687 	public final ProcAsClauseContext procAsClause() throws RecognitionException {
26688 		ProcAsClauseContext _localctx = new ProcAsClauseContext(_ctx, getState());
26689 		enterRule(_localctx, 550, RULE_procAsClause);
26690 		int _la;
26691 		try {
26692 			setState(3781);
26693 			_errHandler.sync(this);
26694 			switch ( getInterpreter().adaptivePredict(_input,391,_ctx) ) {
26695 			case 1:
26696 				enterOuterAlt(_localctx, 1);
26697 				{
26698 				setState(3747);
26699 				_errHandler.sync(this);
26700 				_la = _input.LA(1);
26701 				if (_la==BEGIN) {
26702 					{
26703 					setState(3746);
26704 					match(BEGIN);
26705 					}
26706 				}
26707 
26708 				setState(3749);
26709 				compoundStatement();
26710 				setState(3751);
26711 				_errHandler.sync(this);
26712 				_la = _input.LA(1);
26713 				if (_la==END) {
26714 					{
26715 					setState(3750);
26716 					match(END);
26717 					}
26718 				}
26719 
26720 				}
26721 				break;
26722 			case 2:
26723 				enterOuterAlt(_localctx, 2);
26724 				{
26725 				setState(3753);
26726 				match(EXTERNAL);
26727 				setState(3754);
26728 				match(NAME);
26729 				setState(3758);
26730 				_errHandler.sync(this);
26731 				switch ( getInterpreter().adaptivePredict(_input,387,_ctx) ) {
26732 				case 1:
26733 					{
26734 					setState(3755);
26735 					owner();
26736 					setState(3756);
26737 					match(DOT_);
26738 					}
26739 					break;
26740 				}
26741 				setState(3763);
26742 				_errHandler.sync(this);
26743 				switch ( getInterpreter().adaptivePredict(_input,388,_ctx) ) {
26744 				case 1:
26745 					{
26746 					setState(3760);
26747 					owner();
26748 					setState(3761);
26749 					match(DOT_);
26750 					}
26751 					break;
26752 				}
26753 				setState(3765);
26754 				name();
26755 				}
26756 				break;
26757 			case 3:
26758 				enterOuterAlt(_localctx, 3);
26759 				{
26760 				setState(3766);
26761 				match(BEGIN);
26762 				setState(3767);
26763 				match(ATOMIC);
26764 				setState(3768);
26765 				match(WITH);
26766 				setState(3769);
26767 				procSetOption();
26768 				setState(3774);
26769 				_errHandler.sync(this);
26770 				_la = _input.LA(1);
26771 				while (_la==COMMA_) {
26772 					{
26773 					{
26774 					setState(3770);
26775 					match(COMMA_);
26776 					setState(3771);
26777 					procSetOption();
26778 					}
26779 					}
26780 					setState(3776);
26781 					_errHandler.sync(this);
26782 					_la = _input.LA(1);
26783 				}
26784 				setState(3777);
26785 				compoundStatement();
26786 				setState(3779);
26787 				_errHandler.sync(this);
26788 				_la = _input.LA(1);
26789 				if (_la==END) {
26790 					{
26791 					setState(3778);
26792 					match(END);
26793 					}
26794 				}
26795 
26796 				}
26797 				break;
26798 			}
26799 		}
26800 		catch (RecognitionException re) {
26801 			_localctx.exception = re;
26802 			_errHandler.reportError(this, re);
26803 			_errHandler.recover(this, re);
26804 		}
26805 		finally {
26806 			exitRule();
26807 		}
26808 		return _localctx;
26809 	}
26810 
26811 	public static class ProcSetOptionContext extends ParserRuleContext {
26812 		public TerminalNode LANGUAGE() { return getToken(SQLServerStatementParser.LANGUAGE, 0); }
26813 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
26814 		public StringLiteralsContext stringLiterals() {
26815 			return getRuleContext(StringLiteralsContext.class,0);
26816 		}
26817 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
26818 		public TerminalNode ISOLATION() { return getToken(SQLServerStatementParser.ISOLATION, 0); }
26819 		public TerminalNode LEVEL() { return getToken(SQLServerStatementParser.LEVEL, 0); }
26820 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
26821 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
26822 		public TerminalNode READ() { return getToken(SQLServerStatementParser.READ, 0); }
26823 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
26824 		public TerminalNode DATEFIRST() { return getToken(SQLServerStatementParser.DATEFIRST, 0); }
26825 		public NumberLiteralsContext numberLiterals() {
26826 			return getRuleContext(NumberLiteralsContext.class,0);
26827 		}
26828 		public TerminalNode DATEFORMAT() { return getToken(SQLServerStatementParser.DATEFORMAT, 0); }
26829 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
26830 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
26831 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
26832 		public ProcSetOptionContext(ParserRuleContext parent, int invokingState) {
26833 			super(parent, invokingState);
26834 		}
26835 		@Override public int getRuleIndex() { return RULE_procSetOption; }
26836 		@Override
26837 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26838 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcSetOption(this);
26839 			else return visitor.visitChildren(this);
26840 		}
26841 	}
26842 
26843 	public final ProcSetOptionContext procSetOption() throws RecognitionException {
26844 		ProcSetOptionContext _localctx = new ProcSetOptionContext(_ctx, getState());
26845 		enterRule(_localctx, 552, RULE_procSetOption);
26846 		int _la;
26847 		try {
26848 			setState(3805);
26849 			_errHandler.sync(this);
26850 			switch (_input.LA(1)) {
26851 			case LANGUAGE:
26852 				enterOuterAlt(_localctx, 1);
26853 				{
26854 				setState(3783);
26855 				match(LANGUAGE);
26856 				setState(3784);
26857 				match(EQ_);
26858 				setState(3785);
26859 				stringLiterals();
26860 				}
26861 				break;
26862 			case TRANSACTION:
26863 				enterOuterAlt(_localctx, 2);
26864 				{
26865 				setState(3786);
26866 				match(TRANSACTION);
26867 				setState(3787);
26868 				match(ISOLATION);
26869 				setState(3788);
26870 				match(LEVEL);
26871 				setState(3789);
26872 				match(EQ_);
26873 				setState(3794);
26874 				_errHandler.sync(this);
26875 				switch (_input.LA(1)) {
26876 				case SNAPSHOT:
26877 					{
26878 					setState(3790);
26879 					match(SNAPSHOT);
26880 					}
26881 					break;
26882 				case REPEATABLE:
26883 					{
26884 					setState(3791);
26885 					match(REPEATABLE);
26886 					setState(3792);
26887 					match(READ);
26888 					}
26889 					break;
26890 				case SERIALIZABLE:
26891 					{
26892 					setState(3793);
26893 					match(SERIALIZABLE);
26894 					}
26895 					break;
26896 				default:
26897 					throw new NoViableAltException(this);
26898 				}
26899 				}
26900 				break;
26901 			case DATEFIRST:
26902 				enterOuterAlt(_localctx, 3);
26903 				{
26904 				setState(3796);
26905 				match(DATEFIRST);
26906 				setState(3797);
26907 				match(EQ_);
26908 				setState(3798);
26909 				numberLiterals();
26910 				}
26911 				break;
26912 			case DATEFORMAT:
26913 				enterOuterAlt(_localctx, 4);
26914 				{
26915 				setState(3799);
26916 				match(DATEFORMAT);
26917 				setState(3800);
26918 				match(EQ_);
26919 				setState(3801);
26920 				stringLiterals();
26921 				}
26922 				break;
26923 			case DELAYED_DURABILITY:
26924 				enterOuterAlt(_localctx, 5);
26925 				{
26926 				setState(3802);
26927 				match(DELAYED_DURABILITY);
26928 				setState(3803);
26929 				match(EQ_);
26930 				setState(3804);
26931 				_la = _input.LA(1);
26932 				if ( !(_la==ON || _la==OFF) ) {
26933 				_errHandler.recoverInline(this);
26934 				}
26935 				else {
26936 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
26937 					_errHandler.reportMatch(this);
26938 					consume();
26939 				}
26940 				}
26941 				break;
26942 			default:
26943 				throw new NoViableAltException(this);
26944 			}
26945 		}
26946 		catch (RecognitionException re) {
26947 			_localctx.exception = re;
26948 			_errHandler.reportError(this, re);
26949 			_errHandler.recover(this, re);
26950 		}
26951 		finally {
26952 			exitRule();
26953 		}
26954 		return _localctx;
26955 	}
26956 
26957 	public static class CreateOrAlterViewClauseContext extends ParserRuleContext {
26958 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
26959 		public SelectContext select() {
26960 			return getRuleContext(SelectContext.class,0);
26961 		}
26962 		public List<TerminalNode> WITH() { return getTokens(SQLServerStatementParser.WITH); }
26963 		public TerminalNode WITH(int i) {
26964 			return getToken(SQLServerStatementParser.WITH, i);
26965 		}
26966 		public List<ViewAttributeContext> viewAttribute() {
26967 			return getRuleContexts(ViewAttributeContext.class);
26968 		}
26969 		public ViewAttributeContext viewAttribute(int i) {
26970 			return getRuleContext(ViewAttributeContext.class,i);
26971 		}
26972 		public WithCommonTableExprContext withCommonTableExpr() {
26973 			return getRuleContext(WithCommonTableExprContext.class,0);
26974 		}
26975 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
26976 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
26977 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26978 		public TerminalNode COMMA_(int i) {
26979 			return getToken(SQLServerStatementParser.COMMA_, i);
26980 		}
26981 		public CreateOrAlterViewClauseContext(ParserRuleContext parent, int invokingState) {
26982 			super(parent, invokingState);
26983 		}
26984 		@Override public int getRuleIndex() { return RULE_createOrAlterViewClause; }
26985 		@Override
26986 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26987 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterViewClause(this);
26988 			else return visitor.visitChildren(this);
26989 		}
26990 	}
26991 
26992 	public final CreateOrAlterViewClauseContext createOrAlterViewClause() throws RecognitionException {
26993 		CreateOrAlterViewClauseContext _localctx = new CreateOrAlterViewClauseContext(_ctx, getState());
26994 		enterRule(_localctx, 554, RULE_createOrAlterViewClause);
26995 		int _la;
26996 		try {
26997 			enterOuterAlt(_localctx, 1);
26998 			{
26999 			setState(3816);
27000 			_errHandler.sync(this);
27001 			_la = _input.LA(1);
27002 			if (_la==WITH) {
27003 				{
27004 				setState(3807);
27005 				match(WITH);
27006 				setState(3808);
27007 				viewAttribute();
27008 				setState(3813);
27009 				_errHandler.sync(this);
27010 				_la = _input.LA(1);
27011 				while (_la==COMMA_) {
27012 					{
27013 					{
27014 					setState(3809);
27015 					match(COMMA_);
27016 					setState(3810);
27017 					viewAttribute();
27018 					}
27019 					}
27020 					setState(3815);
27021 					_errHandler.sync(this);
27022 					_la = _input.LA(1);
27023 				}
27024 				}
27025 			}
27026 
27027 			setState(3818);
27028 			match(AS);
27029 			setState(3820);
27030 			_errHandler.sync(this);
27031 			switch ( getInterpreter().adaptivePredict(_input,396,_ctx) ) {
27032 			case 1:
27033 				{
27034 				setState(3819);
27035 				withCommonTableExpr();
27036 				}
27037 				break;
27038 			}
27039 			setState(3822);
27040 			select();
27041 			setState(3826);
27042 			_errHandler.sync(this);
27043 			_la = _input.LA(1);
27044 			if (_la==WITH) {
27045 				{
27046 				setState(3823);
27047 				match(WITH);
27048 				setState(3824);
27049 				match(CHECK);
27050 				setState(3825);
27051 				match(OPTION);
27052 				}
27053 			}
27054 
27055 			}
27056 		}
27057 		catch (RecognitionException re) {
27058 			_localctx.exception = re;
27059 			_errHandler.reportError(this, re);
27060 			_errHandler.recover(this, re);
27061 		}
27062 		finally {
27063 			exitRule();
27064 		}
27065 		return _localctx;
27066 	}
27067 
27068 	public static class ViewAttributeContext extends ParserRuleContext {
27069 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
27070 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
27071 		public TerminalNode VIEW_METADATA() { return getToken(SQLServerStatementParser.VIEW_METADATA, 0); }
27072 		public ViewAttributeContext(ParserRuleContext parent, int invokingState) {
27073 			super(parent, invokingState);
27074 		}
27075 		@Override public int getRuleIndex() { return RULE_viewAttribute; }
27076 		@Override
27077 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27078 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitViewAttribute(this);
27079 			else return visitor.visitChildren(this);
27080 		}
27081 	}
27082 
27083 	public final ViewAttributeContext viewAttribute() throws RecognitionException {
27084 		ViewAttributeContext _localctx = new ViewAttributeContext(_ctx, getState());
27085 		enterRule(_localctx, 556, RULE_viewAttribute);
27086 		int _la;
27087 		try {
27088 			enterOuterAlt(_localctx, 1);
27089 			{
27090 			setState(3828);
27091 			_la = _input.LA(1);
27092 			if ( !(_la==ENCRYPTION || _la==SCHEMABINDING || _la==VIEW_METADATA) ) {
27093 			_errHandler.recoverInline(this);
27094 			}
27095 			else {
27096 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27097 				_errHandler.reportMatch(this);
27098 				consume();
27099 			}
27100 			}
27101 		}
27102 		catch (RecognitionException re) {
27103 			_localctx.exception = re;
27104 			_errHandler.reportError(this, re);
27105 			_errHandler.recover(this, re);
27106 		}
27107 		finally {
27108 			exitRule();
27109 		}
27110 		return _localctx;
27111 	}
27112 
27113 	public static class WithCommonTableExprContext extends ParserRuleContext {
27114 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27115 		public List<CommonTableExprContext> commonTableExpr() {
27116 			return getRuleContexts(CommonTableExprContext.class);
27117 		}
27118 		public CommonTableExprContext commonTableExpr(int i) {
27119 			return getRuleContext(CommonTableExprContext.class,i);
27120 		}
27121 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27122 		public TerminalNode COMMA_(int i) {
27123 			return getToken(SQLServerStatementParser.COMMA_, i);
27124 		}
27125 		public WithCommonTableExprContext(ParserRuleContext parent, int invokingState) {
27126 			super(parent, invokingState);
27127 		}
27128 		@Override public int getRuleIndex() { return RULE_withCommonTableExpr; }
27129 		@Override
27130 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27131 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithCommonTableExpr(this);
27132 			else return visitor.visitChildren(this);
27133 		}
27134 	}
27135 
27136 	public final WithCommonTableExprContext withCommonTableExpr() throws RecognitionException {
27137 		WithCommonTableExprContext _localctx = new WithCommonTableExprContext(_ctx, getState());
27138 		enterRule(_localctx, 558, RULE_withCommonTableExpr);
27139 		int _la;
27140 		try {
27141 			enterOuterAlt(_localctx, 1);
27142 			{
27143 			setState(3830);
27144 			match(WITH);
27145 			setState(3831);
27146 			commonTableExpr();
27147 			setState(3836);
27148 			_errHandler.sync(this);
27149 			_la = _input.LA(1);
27150 			while (_la==COMMA_) {
27151 				{
27152 				{
27153 				setState(3832);
27154 				match(COMMA_);
27155 				setState(3833);
27156 				commonTableExpr();
27157 				}
27158 				}
27159 				setState(3838);
27160 				_errHandler.sync(this);
27161 				_la = _input.LA(1);
27162 			}
27163 			}
27164 		}
27165 		catch (RecognitionException re) {
27166 			_localctx.exception = re;
27167 			_errHandler.reportError(this, re);
27168 			_errHandler.recover(this, re);
27169 		}
27170 		finally {
27171 			exitRule();
27172 		}
27173 		return _localctx;
27174 	}
27175 
27176 	public static class CommonTableExprContext extends ParserRuleContext {
27177 		public NameContext name() {
27178 			return getRuleContext(NameContext.class,0);
27179 		}
27180 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27181 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
27182 		public TerminalNode LP_(int i) {
27183 			return getToken(SQLServerStatementParser.LP_, i);
27184 		}
27185 		public SelectContext select() {
27186 			return getRuleContext(SelectContext.class,0);
27187 		}
27188 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
27189 		public TerminalNode RP_(int i) {
27190 			return getToken(SQLServerStatementParser.RP_, i);
27191 		}
27192 		public List<ColumnNameContext> columnName() {
27193 			return getRuleContexts(ColumnNameContext.class);
27194 		}
27195 		public ColumnNameContext columnName(int i) {
27196 			return getRuleContext(ColumnNameContext.class,i);
27197 		}
27198 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27199 		public TerminalNode COMMA_(int i) {
27200 			return getToken(SQLServerStatementParser.COMMA_, i);
27201 		}
27202 		public CommonTableExprContext(ParserRuleContext parent, int invokingState) {
27203 			super(parent, invokingState);
27204 		}
27205 		@Override public int getRuleIndex() { return RULE_commonTableExpr; }
27206 		@Override
27207 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27208 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommonTableExpr(this);
27209 			else return visitor.visitChildren(this);
27210 		}
27211 	}
27212 
27213 	public final CommonTableExprContext commonTableExpr() throws RecognitionException {
27214 		CommonTableExprContext _localctx = new CommonTableExprContext(_ctx, getState());
27215 		enterRule(_localctx, 560, RULE_commonTableExpr);
27216 		int _la;
27217 		try {
27218 			enterOuterAlt(_localctx, 1);
27219 			{
27220 			setState(3839);
27221 			name();
27222 			setState(3851);
27223 			_errHandler.sync(this);
27224 			_la = _input.LA(1);
27225 			if (_la==LP_) {
27226 				{
27227 				setState(3840);
27228 				match(LP_);
27229 				setState(3841);
27230 				columnName();
27231 				setState(3846);
27232 				_errHandler.sync(this);
27233 				_la = _input.LA(1);
27234 				while (_la==COMMA_) {
27235 					{
27236 					{
27237 					setState(3842);
27238 					match(COMMA_);
27239 					setState(3843);
27240 					columnName();
27241 					}
27242 					}
27243 					setState(3848);
27244 					_errHandler.sync(this);
27245 					_la = _input.LA(1);
27246 				}
27247 				setState(3849);
27248 				match(RP_);
27249 				}
27250 			}
27251 
27252 			setState(3853);
27253 			match(AS);
27254 			setState(3854);
27255 			match(LP_);
27256 			setState(3855);
27257 			select();
27258 			setState(3856);
27259 			match(RP_);
27260 			}
27261 		}
27262 		catch (RecognitionException re) {
27263 			_localctx.exception = re;
27264 			_errHandler.reportError(this, re);
27265 			_errHandler.recover(this, re);
27266 		}
27267 		finally {
27268 			exitRule();
27269 		}
27270 		return _localctx;
27271 	}
27272 
27273 	public static class CreateTriggerClauseContext extends ParserRuleContext {
27274 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27275 		public List<TerminalNode> FOR() { return getTokens(SQLServerStatementParser.FOR); }
27276 		public TerminalNode FOR(int i) {
27277 			return getToken(SQLServerStatementParser.FOR, i);
27278 		}
27279 		public TerminalNode AFTER() { return getToken(SQLServerStatementParser.AFTER, 0); }
27280 		public TerminalNode INSTEAD() { return getToken(SQLServerStatementParser.INSTEAD, 0); }
27281 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
27282 		public CompoundStatementContext compoundStatement() {
27283 			return getRuleContext(CompoundStatementContext.class,0);
27284 		}
27285 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
27286 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
27287 		public MethodSpecifierContext methodSpecifier() {
27288 			return getRuleContext(MethodSpecifierContext.class,0);
27289 		}
27290 		public List<TerminalNode> WITH() { return getTokens(SQLServerStatementParser.WITH); }
27291 		public TerminalNode WITH(int i) {
27292 			return getToken(SQLServerStatementParser.WITH, i);
27293 		}
27294 		public List<DmlTriggerOptionContext> dmlTriggerOption() {
27295 			return getRuleContexts(DmlTriggerOptionContext.class);
27296 		}
27297 		public DmlTriggerOptionContext dmlTriggerOption(int i) {
27298 			return getRuleContext(DmlTriggerOptionContext.class,i);
27299 		}
27300 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27301 		public TerminalNode COMMA_(int i) {
27302 			return getToken(SQLServerStatementParser.COMMA_, i);
27303 		}
27304 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
27305 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
27306 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
27307 		public TerminalNode APPEND() { return getToken(SQLServerStatementParser.APPEND, 0); }
27308 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
27309 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
27310 		public CreateTriggerClauseContext(ParserRuleContext parent, int invokingState) {
27311 			super(parent, invokingState);
27312 		}
27313 		@Override public int getRuleIndex() { return RULE_createTriggerClause; }
27314 		@Override
27315 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27316 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTriggerClause(this);
27317 			else return visitor.visitChildren(this);
27318 		}
27319 	}
27320 
27321 	public final CreateTriggerClauseContext createTriggerClause() throws RecognitionException {
27322 		CreateTriggerClauseContext _localctx = new CreateTriggerClauseContext(_ctx, getState());
27323 		enterRule(_localctx, 562, RULE_createTriggerClause);
27324 		int _la;
27325 		try {
27326 			enterOuterAlt(_localctx, 1);
27327 			{
27328 			setState(3863);
27329 			_errHandler.sync(this);
27330 			_la = _input.LA(1);
27331 			if (_la==WITH) {
27332 				{
27333 				setState(3858);
27334 				match(WITH);
27335 				setState(3859);
27336 				dmlTriggerOption();
27337 				setState(3860);
27338 				match(COMMA_);
27339 				setState(3861);
27340 				dmlTriggerOption();
27341 				}
27342 			}
27343 
27344 			setState(3869);
27345 			_errHandler.sync(this);
27346 			switch (_input.LA(1)) {
27347 			case FOR:
27348 				{
27349 				setState(3865);
27350 				match(FOR);
27351 				}
27352 				break;
27353 			case AFTER:
27354 				{
27355 				setState(3866);
27356 				match(AFTER);
27357 				}
27358 				break;
27359 			case INSTEAD:
27360 				{
27361 				setState(3867);
27362 				match(INSTEAD);
27363 				setState(3868);
27364 				match(OF);
27365 				}
27366 				break;
27367 			default:
27368 				throw new NoViableAltException(this);
27369 			}
27370 			setState(3872);
27371 			_errHandler.sync(this);
27372 			_la = _input.LA(1);
27373 			if (_la==INSERT) {
27374 				{
27375 				setState(3871);
27376 				match(INSERT);
27377 				}
27378 			}
27379 
27380 			setState(3875);
27381 			_errHandler.sync(this);
27382 			switch ( getInterpreter().adaptivePredict(_input,404,_ctx) ) {
27383 			case 1:
27384 				{
27385 				setState(3874);
27386 				match(COMMA_);
27387 				}
27388 				break;
27389 			}
27390 			setState(3878);
27391 			_errHandler.sync(this);
27392 			_la = _input.LA(1);
27393 			if (_la==UPDATE) {
27394 				{
27395 				setState(3877);
27396 				match(UPDATE);
27397 				}
27398 			}
27399 
27400 			setState(3881);
27401 			_errHandler.sync(this);
27402 			switch ( getInterpreter().adaptivePredict(_input,406,_ctx) ) {
27403 			case 1:
27404 				{
27405 				setState(3880);
27406 				match(COMMA_);
27407 				}
27408 				break;
27409 			}
27410 			setState(3884);
27411 			_errHandler.sync(this);
27412 			_la = _input.LA(1);
27413 			if (_la==DELETE) {
27414 				{
27415 				setState(3883);
27416 				match(DELETE);
27417 				}
27418 			}
27419 
27420 			setState(3887);
27421 			_errHandler.sync(this);
27422 			_la = _input.LA(1);
27423 			if (_la==COMMA_) {
27424 				{
27425 				setState(3886);
27426 				match(COMMA_);
27427 				}
27428 			}
27429 
27430 			setState(3891);
27431 			_errHandler.sync(this);
27432 			_la = _input.LA(1);
27433 			if (_la==WITH) {
27434 				{
27435 				setState(3889);
27436 				match(WITH);
27437 				setState(3890);
27438 				match(APPEND);
27439 				}
27440 			}
27441 
27442 			setState(3896);
27443 			_errHandler.sync(this);
27444 			_la = _input.LA(1);
27445 			if (_la==NOT) {
27446 				{
27447 				setState(3893);
27448 				match(NOT);
27449 				setState(3894);
27450 				match(FOR);
27451 				setState(3895);
27452 				match(REPLICATION);
27453 				}
27454 			}
27455 
27456 			setState(3898);
27457 			match(AS);
27458 			setState(3903);
27459 			_errHandler.sync(this);
27460 			switch (_input.LA(1)) {
27461 			case EOF:
27462 			case SEMI_:
27463 			case SELECT:
27464 			case INSERT:
27465 			case UPDATE:
27466 			case DELETE:
27467 			case CREATE:
27468 			case ALTER:
27469 			case DROP:
27470 			case TRUNCATE:
27471 			case SET:
27472 			case WITH:
27473 			case DECLARE:
27474 				{
27475 				setState(3899);
27476 				compoundStatement();
27477 				}
27478 				break;
27479 			case EXTERNAL:
27480 				{
27481 				setState(3900);
27482 				match(EXTERNAL);
27483 				setState(3901);
27484 				match(NAME);
27485 				setState(3902);
27486 				methodSpecifier();
27487 				}
27488 				break;
27489 			default:
27490 				throw new NoViableAltException(this);
27491 			}
27492 			}
27493 		}
27494 		catch (RecognitionException re) {
27495 			_localctx.exception = re;
27496 			_errHandler.reportError(this, re);
27497 			_errHandler.recover(this, re);
27498 		}
27499 		finally {
27500 			exitRule();
27501 		}
27502 		return _localctx;
27503 	}
27504 
27505 	public static class DmlTriggerOptionContext extends ParserRuleContext {
27506 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
27507 		public ExecuteAsClauseContext executeAsClause() {
27508 			return getRuleContext(ExecuteAsClauseContext.class,0);
27509 		}
27510 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
27511 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
27512 		public DmlTriggerOptionContext(ParserRuleContext parent, int invokingState) {
27513 			super(parent, invokingState);
27514 		}
27515 		@Override public int getRuleIndex() { return RULE_dmlTriggerOption; }
27516 		@Override
27517 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27518 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDmlTriggerOption(this);
27519 			else return visitor.visitChildren(this);
27520 		}
27521 	}
27522 
27523 	public final DmlTriggerOptionContext dmlTriggerOption() throws RecognitionException {
27524 		DmlTriggerOptionContext _localctx = new DmlTriggerOptionContext(_ctx, getState());
27525 		enterRule(_localctx, 564, RULE_dmlTriggerOption);
27526 		try {
27527 			setState(3910);
27528 			_errHandler.sync(this);
27529 			switch (_input.LA(1)) {
27530 			case ENCRYPTION:
27531 				enterOuterAlt(_localctx, 1);
27532 				{
27533 				setState(3905);
27534 				match(ENCRYPTION);
27535 				}
27536 				break;
27537 			case EXECUTE:
27538 			case EXEC:
27539 				enterOuterAlt(_localctx, 2);
27540 				{
27541 				setState(3906);
27542 				executeAsClause();
27543 				}
27544 				break;
27545 			case NATIVE_COMPILATION:
27546 				enterOuterAlt(_localctx, 3);
27547 				{
27548 				setState(3907);
27549 				match(NATIVE_COMPILATION);
27550 				}
27551 				break;
27552 			case SCHEMABINDING:
27553 				enterOuterAlt(_localctx, 4);
27554 				{
27555 				setState(3908);
27556 				match(SCHEMABINDING);
27557 				}
27558 				break;
27559 			case COMMA_:
27560 			case FOR:
27561 			case AFTER:
27562 			case INSTEAD:
27563 				enterOuterAlt(_localctx, 5);
27564 				{
27565 				}
27566 				break;
27567 			default:
27568 				throw new NoViableAltException(this);
27569 			}
27570 		}
27571 		catch (RecognitionException re) {
27572 			_localctx.exception = re;
27573 			_errHandler.reportError(this, re);
27574 			_errHandler.recover(this, re);
27575 		}
27576 		finally {
27577 			exitRule();
27578 		}
27579 		return _localctx;
27580 	}
27581 
27582 	public static class MethodSpecifierContext extends ParserRuleContext {
27583 		public List<NameContext> name() {
27584 			return getRuleContexts(NameContext.class);
27585 		}
27586 		public NameContext name(int i) {
27587 			return getRuleContext(NameContext.class,i);
27588 		}
27589 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
27590 		public TerminalNode DOT_(int i) {
27591 			return getToken(SQLServerStatementParser.DOT_, i);
27592 		}
27593 		public MethodSpecifierContext(ParserRuleContext parent, int invokingState) {
27594 			super(parent, invokingState);
27595 		}
27596 		@Override public int getRuleIndex() { return RULE_methodSpecifier; }
27597 		@Override
27598 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27599 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMethodSpecifier(this);
27600 			else return visitor.visitChildren(this);
27601 		}
27602 	}
27603 
27604 	public final MethodSpecifierContext methodSpecifier() throws RecognitionException {
27605 		MethodSpecifierContext _localctx = new MethodSpecifierContext(_ctx, getState());
27606 		enterRule(_localctx, 566, RULE_methodSpecifier);
27607 		try {
27608 			enterOuterAlt(_localctx, 1);
27609 			{
27610 			setState(3912);
27611 			name();
27612 			setState(3913);
27613 			match(DOT_);
27614 			setState(3914);
27615 			name();
27616 			setState(3915);
27617 			match(DOT_);
27618 			setState(3916);
27619 			name();
27620 			}
27621 		}
27622 		catch (RecognitionException re) {
27623 			_localctx.exception = re;
27624 			_errHandler.reportError(this, re);
27625 			_errHandler.recover(this, re);
27626 		}
27627 		finally {
27628 			exitRule();
27629 		}
27630 		return _localctx;
27631 	}
27632 
27633 	public static class TriggerTargetContext extends ParserRuleContext {
27634 		public TableNameContext tableName() {
27635 			return getRuleContext(TableNameContext.class,0);
27636 		}
27637 		public ViewNameContext viewName() {
27638 			return getRuleContext(ViewNameContext.class,0);
27639 		}
27640 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
27641 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
27642 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
27643 		public TriggerTargetContext(ParserRuleContext parent, int invokingState) {
27644 			super(parent, invokingState);
27645 		}
27646 		@Override public int getRuleIndex() { return RULE_triggerTarget; }
27647 		@Override
27648 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27649 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTriggerTarget(this);
27650 			else return visitor.visitChildren(this);
27651 		}
27652 	}
27653 
27654 	public final TriggerTargetContext triggerTarget() throws RecognitionException {
27655 		TriggerTargetContext _localctx = new TriggerTargetContext(_ctx, getState());
27656 		enterRule(_localctx, 568, RULE_triggerTarget);
27657 		try {
27658 			setState(3923);
27659 			_errHandler.sync(this);
27660 			switch ( getInterpreter().adaptivePredict(_input,413,_ctx) ) {
27661 			case 1:
27662 				enterOuterAlt(_localctx, 1);
27663 				{
27664 				setState(3918);
27665 				tableName();
27666 				}
27667 				break;
27668 			case 2:
27669 				enterOuterAlt(_localctx, 2);
27670 				{
27671 				setState(3919);
27672 				viewName();
27673 				}
27674 				break;
27675 			case 3:
27676 				enterOuterAlt(_localctx, 3);
27677 				{
27678 				setState(3920);
27679 				match(ALL);
27680 				setState(3921);
27681 				match(SERVER);
27682 				}
27683 				break;
27684 			case 4:
27685 				enterOuterAlt(_localctx, 4);
27686 				{
27687 				setState(3922);
27688 				match(DATABASE);
27689 				}
27690 				break;
27691 			}
27692 		}
27693 		catch (RecognitionException re) {
27694 			_localctx.exception = re;
27695 			_errHandler.reportError(this, re);
27696 			_errHandler.recover(this, re);
27697 		}
27698 		finally {
27699 			exitRule();
27700 		}
27701 		return _localctx;
27702 	}
27703 
27704 	public static class CreateOrAlterSequenceClauseContext extends ParserRuleContext {
27705 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27706 		public DataTypeContext dataType() {
27707 			return getRuleContext(DataTypeContext.class,0);
27708 		}
27709 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27710 		public ExprContext expr() {
27711 			return getRuleContext(ExprContext.class,0);
27712 		}
27713 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
27714 		public TerminalNode RESTART() { return getToken(SQLServerStatementParser.RESTART, 0); }
27715 		public TerminalNode INCREMENT() { return getToken(SQLServerStatementParser.INCREMENT, 0); }
27716 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
27717 		public TerminalNode MINVALUE() { return getToken(SQLServerStatementParser.MINVALUE, 0); }
27718 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
27719 		public TerminalNode MAXVALUE() { return getToken(SQLServerStatementParser.MAXVALUE, 0); }
27720 		public TerminalNode CACHE() { return getToken(SQLServerStatementParser.CACHE, 0); }
27721 		public TerminalNode CYCLE() { return getToken(SQLServerStatementParser.CYCLE, 0); }
27722 		public CreateOrAlterSequenceClauseContext(ParserRuleContext parent, int invokingState) {
27723 			super(parent, invokingState);
27724 		}
27725 		@Override public int getRuleIndex() { return RULE_createOrAlterSequenceClause; }
27726 		@Override
27727 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27728 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterSequenceClause(this);
27729 			else return visitor.visitChildren(this);
27730 		}
27731 	}
27732 
27733 	public final CreateOrAlterSequenceClauseContext createOrAlterSequenceClause() throws RecognitionException {
27734 		CreateOrAlterSequenceClauseContext _localctx = new CreateOrAlterSequenceClauseContext(_ctx, getState());
27735 		enterRule(_localctx, 570, RULE_createOrAlterSequenceClause);
27736 		int _la;
27737 		try {
27738 			setState(3953);
27739 			_errHandler.sync(this);
27740 			switch ( getInterpreter().adaptivePredict(_input,417,_ctx) ) {
27741 			case 1:
27742 				enterOuterAlt(_localctx, 1);
27743 				{
27744 				setState(3925);
27745 				match(AS);
27746 				setState(3926);
27747 				dataType();
27748 				}
27749 				break;
27750 			case 2:
27751 				enterOuterAlt(_localctx, 2);
27752 				{
27753 				setState(3927);
27754 				_la = _input.LA(1);
27755 				if ( !(_la==START || _la==RESTART) ) {
27756 				_errHandler.recoverInline(this);
27757 				}
27758 				else {
27759 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27760 					_errHandler.reportMatch(this);
27761 					consume();
27762 				}
27763 				setState(3928);
27764 				match(WITH);
27765 				setState(3929);
27766 				expr(0);
27767 				}
27768 				break;
27769 			case 3:
27770 				enterOuterAlt(_localctx, 3);
27771 				{
27772 				setState(3930);
27773 				match(INCREMENT);
27774 				setState(3931);
27775 				match(BY);
27776 				setState(3932);
27777 				expr(0);
27778 				}
27779 				break;
27780 			case 4:
27781 				enterOuterAlt(_localctx, 4);
27782 				{
27783 				setState(3933);
27784 				match(MINVALUE);
27785 				setState(3935);
27786 				_errHandler.sync(this);
27787 				switch ( getInterpreter().adaptivePredict(_input,414,_ctx) ) {
27788 				case 1:
27789 					{
27790 					setState(3934);
27791 					expr(0);
27792 					}
27793 					break;
27794 				}
27795 				}
27796 				break;
27797 			case 5:
27798 				enterOuterAlt(_localctx, 5);
27799 				{
27800 				setState(3937);
27801 				match(NO);
27802 				setState(3938);
27803 				match(MINVALUE);
27804 				}
27805 				break;
27806 			case 6:
27807 				enterOuterAlt(_localctx, 6);
27808 				{
27809 				setState(3939);
27810 				match(MAXVALUE);
27811 				setState(3941);
27812 				_errHandler.sync(this);
27813 				switch ( getInterpreter().adaptivePredict(_input,415,_ctx) ) {
27814 				case 1:
27815 					{
27816 					setState(3940);
27817 					expr(0);
27818 					}
27819 					break;
27820 				}
27821 				}
27822 				break;
27823 			case 7:
27824 				enterOuterAlt(_localctx, 7);
27825 				{
27826 				setState(3943);
27827 				match(NO);
27828 				setState(3944);
27829 				match(MAXVALUE);
27830 				}
27831 				break;
27832 			case 8:
27833 				enterOuterAlt(_localctx, 8);
27834 				{
27835 				setState(3945);
27836 				match(CACHE);
27837 				setState(3946);
27838 				expr(0);
27839 				}
27840 				break;
27841 			case 9:
27842 				enterOuterAlt(_localctx, 9);
27843 				{
27844 				setState(3947);
27845 				match(NO);
27846 				setState(3948);
27847 				match(CACHE);
27848 				}
27849 				break;
27850 			case 10:
27851 				enterOuterAlt(_localctx, 10);
27852 				{
27853 				setState(3950);
27854 				_errHandler.sync(this);
27855 				_la = _input.LA(1);
27856 				if (_la==NO) {
27857 					{
27858 					setState(3949);
27859 					match(NO);
27860 					}
27861 				}
27862 
27863 				setState(3952);
27864 				match(CYCLE);
27865 				}
27866 				break;
27867 			}
27868 		}
27869 		catch (RecognitionException re) {
27870 			_localctx.exception = re;
27871 			_errHandler.reportError(this, re);
27872 			_errHandler.recover(this, re);
27873 		}
27874 		finally {
27875 			exitRule();
27876 		}
27877 		return _localctx;
27878 	}
27879 
27880 	public static class CreateIndexClauseContext extends ParserRuleContext {
27881 		public TerminalNode INCLUDE() { return getToken(SQLServerStatementParser.INCLUDE, 0); }
27882 		public ColumnNamesWithSortContext columnNamesWithSort() {
27883 			return getRuleContext(ColumnNamesWithSortContext.class,0);
27884 		}
27885 		public TerminalNode WHERE() { return getToken(SQLServerStatementParser.WHERE, 0); }
27886 		public FilterPredicateContext filterPredicate() {
27887 			return getRuleContext(FilterPredicateContext.class,0);
27888 		}
27889 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27890 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
27891 		public TerminalNode LP_(int i) {
27892 			return getToken(SQLServerStatementParser.LP_, i);
27893 		}
27894 		public List<RelationalIndexOptionContext> relationalIndexOption() {
27895 			return getRuleContexts(RelationalIndexOptionContext.class);
27896 		}
27897 		public RelationalIndexOptionContext relationalIndexOption(int i) {
27898 			return getRuleContext(RelationalIndexOptionContext.class,i);
27899 		}
27900 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
27901 		public TerminalNode RP_(int i) {
27902 			return getToken(SQLServerStatementParser.RP_, i);
27903 		}
27904 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
27905 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
27906 		public SchemaNameContext schemaName() {
27907 			return getRuleContext(SchemaNameContext.class,0);
27908 		}
27909 		public ColumnNameContext columnName() {
27910 			return getRuleContext(ColumnNameContext.class,0);
27911 		}
27912 		public List<NameContext> name() {
27913 			return getRuleContexts(NameContext.class);
27914 		}
27915 		public NameContext name(int i) {
27916 			return getRuleContext(NameContext.class,i);
27917 		}
27918 		public StringLiteralsContext stringLiterals() {
27919 			return getRuleContext(StringLiteralsContext.class,0);
27920 		}
27921 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27922 		public TerminalNode COMMA_(int i) {
27923 			return getToken(SQLServerStatementParser.COMMA_, i);
27924 		}
27925 		public CreateIndexClauseContext(ParserRuleContext parent, int invokingState) {
27926 			super(parent, invokingState);
27927 		}
27928 		@Override public int getRuleIndex() { return RULE_createIndexClause; }
27929 		@Override
27930 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27931 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndexClause(this);
27932 			else return visitor.visitChildren(this);
27933 		}
27934 	}
27935 
27936 	public final CreateIndexClauseContext createIndexClause() throws RecognitionException {
27937 		CreateIndexClauseContext _localctx = new CreateIndexClauseContext(_ctx, getState());
27938 		enterRule(_localctx, 572, RULE_createIndexClause);
27939 		int _la;
27940 		try {
27941 			enterOuterAlt(_localctx, 1);
27942 			{
27943 			setState(3957);
27944 			_errHandler.sync(this);
27945 			_la = _input.LA(1);
27946 			if (_la==INCLUDE) {
27947 				{
27948 				setState(3955);
27949 				match(INCLUDE);
27950 				setState(3956);
27951 				columnNamesWithSort();
27952 				}
27953 			}
27954 
27955 			setState(3961);
27956 			_errHandler.sync(this);
27957 			_la = _input.LA(1);
27958 			if (_la==WHERE) {
27959 				{
27960 				setState(3959);
27961 				match(WHERE);
27962 				setState(3960);
27963 				filterPredicate();
27964 				}
27965 			}
27966 
27967 			setState(3975);
27968 			_errHandler.sync(this);
27969 			_la = _input.LA(1);
27970 			if (_la==WITH) {
27971 				{
27972 				setState(3963);
27973 				match(WITH);
27974 				setState(3964);
27975 				match(LP_);
27976 				setState(3965);
27977 				relationalIndexOption();
27978 				setState(3970);
27979 				_errHandler.sync(this);
27980 				_la = _input.LA(1);
27981 				while (_la==COMMA_) {
27982 					{
27983 					{
27984 					setState(3966);
27985 					match(COMMA_);
27986 					setState(3967);
27987 					relationalIndexOption();
27988 					}
27989 					}
27990 					setState(3972);
27991 					_errHandler.sync(this);
27992 					_la = _input.LA(1);
27993 				}
27994 				setState(3973);
27995 				match(RP_);
27996 				}
27997 			}
27998 
27999 			setState(3986);
28000 			_errHandler.sync(this);
28001 			_la = _input.LA(1);
28002 			if (_la==ON) {
28003 				{
28004 				setState(3977);
28005 				match(ON);
28006 				setState(3984);
28007 				_errHandler.sync(this);
28008 				switch ( getInterpreter().adaptivePredict(_input,422,_ctx) ) {
28009 				case 1:
28010 					{
28011 					setState(3978);
28012 					schemaName();
28013 					setState(3979);
28014 					match(LP_);
28015 					setState(3980);
28016 					columnName();
28017 					setState(3981);
28018 					match(RP_);
28019 					}
28020 					break;
28021 				case 2:
28022 					{
28023 					setState(3983);
28024 					name();
28025 					}
28026 					break;
28027 				}
28028 				}
28029 			}
28030 
28031 			setState(3993);
28032 			_errHandler.sync(this);
28033 			_la = _input.LA(1);
28034 			if (_la==FILESTREAM_ON) {
28035 				{
28036 				setState(3988);
28037 				match(FILESTREAM_ON);
28038 				setState(3991);
28039 				_errHandler.sync(this);
28040 				switch (_input.LA(1)) {
28041 				case TRUNCATE:
28042 				case SCHEMA:
28043 				case FUNCTION:
28044 				case TRIGGER:
28045 				case CAST:
28046 				case GROUP:
28047 				case LIMIT:
28048 				case OFFSET:
28049 				case SAVEPOINT:
28050 				case BOOLEAN:
28051 				case ARRAY:
28052 				case DATE:
28053 				case LOCALTIME:
28054 				case LOCALTIMESTAMP:
28055 				case QUARTER:
28056 				case WEEK:
28057 				case DAY:
28058 				case MICROSECOND:
28059 				case MAX:
28060 				case MIN:
28061 				case SUM:
28062 				case COUNT:
28063 				case AVG:
28064 				case ENABLE:
28065 				case DISABLE:
28066 				case INSTANCE:
28067 				case DO:
28068 				case DEFINER:
28069 				case SQL:
28070 				case CASCADED:
28071 				case LOCAL:
28072 				case NEXT:
28073 				case NAME:
28074 				case INTEGER:
28075 				case TYPE:
28076 				case READ_ONLY:
28077 				case DATABASE:
28078 				case DATEPART:
28079 				case PASSWORD:
28080 				case BINARY:
28081 				case HIDDEN_:
28082 				case MOD:
28083 				case PARTITION:
28084 				case PARTITIONS:
28085 				case TOP:
28086 				case ROW:
28087 				case ROWS:
28088 				case XOR:
28089 				case ALWAYS:
28090 				case ROLE:
28091 				case START:
28092 				case ALGORITHM:
28093 				case AUTO:
28094 				case BLOCKERS:
28095 				case CLUSTERED:
28096 				case NONCLUSTERED:
28097 				case COLUMNSTORE:
28098 				case CONTENT:
28099 				case YEARS:
28100 				case MONTHS:
28101 				case WEEKS:
28102 				case DAYS:
28103 				case MINUTES:
28104 				case DENY:
28105 				case DETERMINISTIC:
28106 				case DISTRIBUTION:
28107 				case DOCUMENT:
28108 				case DURABILITY:
28109 				case ENCRYPTED:
28110 				case FILESTREAM:
28111 				case FILETABLE:
28112 				case FILLFACTOR:
28113 				case FOLLOWING:
28114 				case HASH:
28115 				case HEAP:
28116 				case INBOUND:
28117 				case OUTBOUND:
28118 				case UNBOUNDED:
28119 				case INFINITE:
28120 				case LOGIN:
28121 				case MASKED:
28122 				case MAXDOP:
28123 				case MOVE:
28124 				case NOCHECK:
28125 				case OBJECT:
28126 				case OFF:
28127 				case ONLINE:
28128 				case OVER:
28129 				case PAGE:
28130 				case PAUSED:
28131 				case PERIOD:
28132 				case PERSISTED:
28133 				case PRECEDING:
28134 				case RANDOMIZED:
28135 				case RANGE:
28136 				case REBUILD:
28137 				case REPLICATE:
28138 				case REPLICATION:
28139 				case RESUMABLE:
28140 				case ROWGUIDCOL:
28141 				case SAVE:
28142 				case SELF:
28143 				case SPARSE:
28144 				case SWITCH:
28145 				case TRAN:
28146 				case TRANCOUNT:
28147 				case CONTROL:
28148 				case CONCAT:
28149 				case TAKE:
28150 				case OWNERSHIP:
28151 				case DEFINITION:
28152 				case APPLICATION:
28153 				case ASSEMBLY:
28154 				case SYMMETRIC:
28155 				case ASYMMETRIC:
28156 				case SERVER:
28157 				case RECEIVE:
28158 				case CHANGE:
28159 				case TRACE:
28160 				case TRACKING:
28161 				case RESOURCES:
28162 				case SETTINGS:
28163 				case STATE:
28164 				case AVAILABILITY:
28165 				case CREDENTIAL:
28166 				case ENDPOINT:
28167 				case EVENT:
28168 				case NOTIFICATION:
28169 				case LINKED:
28170 				case AUDIT:
28171 				case DDL:
28172 				case XML:
28173 				case IMPERSONATE:
28174 				case SECURABLES:
28175 				case AUTHENTICATE:
28176 				case EXTERNAL:
28177 				case ACCESS:
28178 				case ADMINISTER:
28179 				case BULK:
28180 				case OPERATIONS:
28181 				case UNSAFE:
28182 				case SHUTDOWN:
28183 				case SCOPED:
28184 				case CONFIGURATION:
28185 				case DATASPACE:
28186 				case SERVICE:
28187 				case CERTIFICATE:
28188 				case CONTRACT:
28189 				case ENCRYPTION:
28190 				case MASTER:
28191 				case DATA:
28192 				case SOURCE:
28193 				case FILE:
28194 				case FORMAT:
28195 				case LIBRARY:
28196 				case FULLTEXT:
28197 				case MASK:
28198 				case UNMASK:
28199 				case MESSAGE:
28200 				case REMOTE:
28201 				case BINDING:
28202 				case ROUTE:
28203 				case SECURITY:
28204 				case POLICY:
28205 				case AGGREGATE:
28206 				case QUEUE:
28207 				case RULE:
28208 				case SYNONYM:
28209 				case COLLECTION:
28210 				case SCRIPT:
28211 				case KILL:
28212 				case BACKUP:
28213 				case LOG:
28214 				case SHOWPLAN:
28215 				case SUBSCRIBE:
28216 				case QUERY:
28217 				case NOTIFICATIONS:
28218 				case CHECKPOINT:
28219 				case SEQUENCE:
28220 				case ABORT_AFTER_WAIT:
28221 				case ALLOW_PAGE_LOCKS:
28222 				case ALLOW_ROW_LOCKS:
28223 				case ALL_SPARSE_COLUMNS:
28224 				case BUCKET_COUNT:
28225 				case COLUMNSTORE_ARCHIVE:
28226 				case COLUMN_ENCRYPTION_KEY:
28227 				case COLUMN_SET:
28228 				case COMPRESSION_DELAY:
28229 				case DATABASE_DEAULT:
28230 				case DATA_COMPRESSION:
28231 				case DATA_CONSISTENCY_CHECK:
28232 				case ENCRYPTION_TYPE:
28233 				case SYSTEM_TIME:
28234 				case SYSTEM_VERSIONING:
28235 				case TEXTIMAGE_ON:
28236 				case WAIT_AT_LOW_PRIORITY:
28237 				case STATISTICS_INCREMENTAL:
28238 				case STATISTICS_NORECOMPUTE:
28239 				case ROUND_ROBIN:
28240 				case SCHEMA_AND_DATA:
28241 				case SCHEMA_ONLY:
28242 				case SORT_IN_TEMPDB:
28243 				case IGNORE_DUP_KEY:
28244 				case IMPLICIT_TRANSACTIONS:
28245 				case MAX_DURATION:
28246 				case MEMORY_OPTIMIZED:
28247 				case MIGRATION_STATE:
28248 				case PAD_INDEX:
28249 				case REMOTE_DATA_ARCHIVE:
28250 				case FILESTREAM_ON:
28251 				case FILETABLE_COLLATE_FILENAME:
28252 				case FILETABLE_DIRECTORY:
28253 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
28254 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
28255 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
28256 				case FILTER_PREDICATE:
28257 				case HISTORY_RETENTION_PERIOD:
28258 				case HISTORY_TABLE:
28259 				case LOCK_ESCALATION:
28260 				case DROP_EXISTING:
28261 				case ROW_NUMBER:
28262 				case FIRST:
28263 				case DATETIME2:
28264 				case OUTPUT:
28265 				case INSERTED:
28266 				case DELETED:
28267 				case FILENAME:
28268 				case MAXSIZE:
28269 				case FILEGROWTH:
28270 				case UNLIMITED:
28271 				case KB:
28272 				case MB:
28273 				case GB:
28274 				case TB:
28275 				case MEMORY_OPTIMIZED_DATA:
28276 				case FILEGROUP:
28277 				case NON_TRANSACTED_ACCESS:
28278 				case DB_CHAINING:
28279 				case TRUSTWORTHY:
28280 				case FORWARD_ONLY:
28281 				case KEYSET:
28282 				case FAST_FORWARD:
28283 				case SCROLL_LOCKS:
28284 				case OPTIMISTIC:
28285 				case TYPE_WARNING:
28286 				case SCHEMABINDING:
28287 				case CALLER:
28288 				case OWNER:
28289 				case SNAPSHOT:
28290 				case REPEATABLE:
28291 				case SERIALIZABLE:
28292 				case NATIVE_COMPILATION:
28293 				case VIEW_METADATA:
28294 				case INSTEAD:
28295 				case APPEND:
28296 				case INCREMENT:
28297 				case CACHE:
28298 				case MINVALUE:
28299 				case MAXVALUE:
28300 				case RESTART:
28301 				case LOB_COMPACTION:
28302 				case COMPRESS_ALL_ROW_GROUPS:
28303 				case REORGANIZE:
28304 				case RESUME:
28305 				case PAUSE:
28306 				case ABORT:
28307 				case ACCELERATED_DATABASE_RECOVERY:
28308 				case PERSISTENT_VERSION_STORE_FILEGROUP:
28309 				case IMMEDIATE:
28310 				case NO_WAIT:
28311 				case TARGET_RECOVERY_TIME:
28312 				case SECONDS:
28313 				case HONOR_BROKER_PRIORITY:
28314 				case ERROR_BROKER_CONVERSATIONS:
28315 				case NEW_BROKER:
28316 				case DISABLE_BROKER:
28317 				case ENABLE_BROKER:
28318 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
28319 				case READ_COMMITTED_SNAPSHOT:
28320 				case ALLOW_SNAPSHOT_ISOLATION:
28321 				case RECURSIVE_TRIGGERS:
28322 				case QUOTED_IDENTIFIER:
28323 				case NUMERIC_ROUNDABORT:
28324 				case CONCAT_NULL_YIELDS_NULL:
28325 				case COMPATIBILITY_LEVEL:
28326 				case ARITHABORT:
28327 				case ANSI_WARNINGS:
28328 				case ANSI_PADDING:
28329 				case ANSI_NULLS:
28330 				case ANSI_NULL_DEFAULT:
28331 				case PAGE_VERIFY:
28332 				case CHECKSUM:
28333 				case TORN_PAGE_DETECTION:
28334 				case BULK_LOGGED:
28335 				case RECOVERY:
28336 				case TOTAL_EXECUTION_CPU_TIME_MS:
28337 				case TOTAL_COMPILE_CPU_TIME_MS:
28338 				case STALE_CAPTURE_POLICY_THRESHOLD:
28339 				case EXECUTION_COUNT:
28340 				case QUERY_CAPTURE_POLICY:
28341 				case WAIT_STATS_CAPTURE_MODE:
28342 				case MAX_PLANS_PER_QUERY:
28343 				case QUERY_CAPTURE_MODE:
28344 				case SIZE_BASED_CLEANUP_MODE:
28345 				case INTERVAL_LENGTH_MINUTES:
28346 				case MAX_STORAGE_SIZE_MB:
28347 				case DATA_FLUSH_INTERVAL_SECONDS:
28348 				case CLEANUP_POLICY:
28349 				case CUSTOM:
28350 				case STALE_QUERY_THRESHOLD_DAYS:
28351 				case OPERATION_MODE:
28352 				case QUERY_STORE:
28353 				case CURSOR_DEFAULT:
28354 				case GLOBAL:
28355 				case CURSOR_CLOSE_ON_COMMIT:
28356 				case HOURS:
28357 				case CHANGE_RETENTION:
28358 				case AUTO_CLEANUP:
28359 				case CHANGE_TRACKING:
28360 				case AUTOMATIC_TUNING:
28361 				case FORCE_LAST_GOOD_PLAN:
28362 				case AUTO_UPDATE_STATISTICS_ASYNC:
28363 				case AUTO_UPDATE_STATISTICS:
28364 				case AUTO_SHRINK:
28365 				case AUTO_CREATE_STATISTICS:
28366 				case INCREMENTAL:
28367 				case AUTO_CLOSE:
28368 				case DATA_RETENTION:
28369 				case TEMPORAL_HISTORY_RETENTION:
28370 				case EDITION:
28371 				case MIXED_PAGE_ALLOCATION:
28372 				case DISABLED:
28373 				case ALLOWED:
28374 				case HADR:
28375 				case MULTI_USER:
28376 				case RESTRICTED_USER:
28377 				case SINGLE_USER:
28378 				case OFFLINE:
28379 				case EMERGENCY:
28380 				case SUSPEND:
28381 				case DATE_CORRELATION_OPTIMIZATION:
28382 				case ELASTIC_POOL:
28383 				case SERVICE_OBJECTIVE:
28384 				case DATABASE_NAME:
28385 				case ALLOW_CONNECTIONS:
28386 				case GEO:
28387 				case NAMED:
28388 				case DATEFIRST:
28389 				case BACKUP_STORAGE_REDUNDANCY:
28390 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
28391 				case SECONDARY:
28392 				case FAILOVER:
28393 				case DEFAULT_FULLTEXT_LANGUAGE:
28394 				case DEFAULT_LANGUAGE:
28395 				case INLINE:
28396 				case NESTED_TRIGGERS:
28397 				case TRANSFORM_NOISE_WORDS:
28398 				case TWO_DIGIT_YEAR_CUTOFF:
28399 				case PERSISTENT_LOG_BUFFER:
28400 				case DIRECTORY_NAME:
28401 				case DATEFORMAT:
28402 				case DELAYED_DURABILITY:
28403 				case AUTHORIZATION:
28404 				case TRANSFER:
28405 				case SEARCH:
28406 				case MEMBER:
28407 				case IDENTIFIER_:
28408 				case DELIMITED_IDENTIFIER_:
28409 					{
28410 					setState(3989);
28411 					name();
28412 					}
28413 					break;
28414 				case STRING_:
28415 				case NCHAR_TEXT:
28416 					{
28417 					setState(3990);
28418 					stringLiterals();
28419 					}
28420 					break;
28421 				default:
28422 					throw new NoViableAltException(this);
28423 				}
28424 				}
28425 			}
28426 
28427 			}
28428 		}
28429 		catch (RecognitionException re) {
28430 			_localctx.exception = re;
28431 			_errHandler.reportError(this, re);
28432 			_errHandler.recover(this, re);
28433 		}
28434 		finally {
28435 			exitRule();
28436 		}
28437 		return _localctx;
28438 	}
28439 
28440 	public static class FilterPredicateContext extends ParserRuleContext {
28441 		public List<ConjunctContext> conjunct() {
28442 			return getRuleContexts(ConjunctContext.class);
28443 		}
28444 		public ConjunctContext conjunct(int i) {
28445 			return getRuleContext(ConjunctContext.class,i);
28446 		}
28447 		public List<TerminalNode> AND() { return getTokens(SQLServerStatementParser.AND); }
28448 		public TerminalNode AND(int i) {
28449 			return getToken(SQLServerStatementParser.AND, i);
28450 		}
28451 		public FilterPredicateContext(ParserRuleContext parent, int invokingState) {
28452 			super(parent, invokingState);
28453 		}
28454 		@Override public int getRuleIndex() { return RULE_filterPredicate; }
28455 		@Override
28456 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28457 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFilterPredicate(this);
28458 			else return visitor.visitChildren(this);
28459 		}
28460 	}
28461 
28462 	public final FilterPredicateContext filterPredicate() throws RecognitionException {
28463 		FilterPredicateContext _localctx = new FilterPredicateContext(_ctx, getState());
28464 		enterRule(_localctx, 574, RULE_filterPredicate);
28465 		int _la;
28466 		try {
28467 			enterOuterAlt(_localctx, 1);
28468 			{
28469 			setState(3995);
28470 			conjunct();
28471 			setState(4000);
28472 			_errHandler.sync(this);
28473 			_la = _input.LA(1);
28474 			while (_la==AND) {
28475 				{
28476 				{
28477 				setState(3996);
28478 				match(AND);
28479 				setState(3997);
28480 				conjunct();
28481 				}
28482 				}
28483 				setState(4002);
28484 				_errHandler.sync(this);
28485 				_la = _input.LA(1);
28486 			}
28487 			}
28488 		}
28489 		catch (RecognitionException re) {
28490 			_localctx.exception = re;
28491 			_errHandler.reportError(this, re);
28492 			_errHandler.recover(this, re);
28493 		}
28494 		finally {
28495 			exitRule();
28496 		}
28497 		return _localctx;
28498 	}
28499 
28500 	public static class ConjunctContext extends ParserRuleContext {
28501 		public ColumnNameContext columnName() {
28502 			return getRuleContext(ColumnNameContext.class,0);
28503 		}
28504 		public TerminalNode IN() { return getToken(SQLServerStatementParser.IN, 0); }
28505 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
28506 		public List<ExprContext> expr() {
28507 			return getRuleContexts(ExprContext.class);
28508 		}
28509 		public ExprContext expr(int i) {
28510 			return getRuleContext(ExprContext.class,i);
28511 		}
28512 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
28513 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28514 		public TerminalNode COMMA_(int i) {
28515 			return getToken(SQLServerStatementParser.COMMA_, i);
28516 		}
28517 		public ComparisonOperatorContext comparisonOperator() {
28518 			return getRuleContext(ComparisonOperatorContext.class,0);
28519 		}
28520 		public ConjunctContext(ParserRuleContext parent, int invokingState) {
28521 			super(parent, invokingState);
28522 		}
28523 		@Override public int getRuleIndex() { return RULE_conjunct; }
28524 		@Override
28525 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28526 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConjunct(this);
28527 			else return visitor.visitChildren(this);
28528 		}
28529 	}
28530 
28531 	public final ConjunctContext conjunct() throws RecognitionException {
28532 		ConjunctContext _localctx = new ConjunctContext(_ctx, getState());
28533 		enterRule(_localctx, 576, RULE_conjunct);
28534 		int _la;
28535 		try {
28536 			setState(4020);
28537 			_errHandler.sync(this);
28538 			switch ( getInterpreter().adaptivePredict(_input,428,_ctx) ) {
28539 			case 1:
28540 				enterOuterAlt(_localctx, 1);
28541 				{
28542 				setState(4003);
28543 				columnName();
28544 				setState(4004);
28545 				match(IN);
28546 				setState(4005);
28547 				match(LP_);
28548 				setState(4006);
28549 				expr(0);
28550 				setState(4011);
28551 				_errHandler.sync(this);
28552 				_la = _input.LA(1);
28553 				while (_la==COMMA_) {
28554 					{
28555 					{
28556 					setState(4007);
28557 					match(COMMA_);
28558 					setState(4008);
28559 					expr(0);
28560 					}
28561 					}
28562 					setState(4013);
28563 					_errHandler.sync(this);
28564 					_la = _input.LA(1);
28565 				}
28566 				setState(4014);
28567 				match(RP_);
28568 				}
28569 				break;
28570 			case 2:
28571 				enterOuterAlt(_localctx, 2);
28572 				{
28573 				setState(4016);
28574 				columnName();
28575 				setState(4017);
28576 				comparisonOperator();
28577 				setState(4018);
28578 				expr(0);
28579 				}
28580 				break;
28581 			}
28582 		}
28583 		catch (RecognitionException re) {
28584 			_localctx.exception = re;
28585 			_errHandler.reportError(this, re);
28586 			_errHandler.recover(this, re);
28587 		}
28588 		finally {
28589 			exitRule();
28590 		}
28591 		return _localctx;
28592 	}
28593 
28594 	public static class AlterIndexClauseContext extends ParserRuleContext {
28595 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
28596 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
28597 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
28598 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
28599 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
28600 		public List<RelationalIndexOptionContext> relationalIndexOption() {
28601 			return getRuleContexts(RelationalIndexOptionContext.class);
28602 		}
28603 		public RelationalIndexOptionContext relationalIndexOption(int i) {
28604 			return getRuleContext(RelationalIndexOptionContext.class,i);
28605 		}
28606 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
28607 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
28608 		public ExprContext expr() {
28609 			return getRuleContext(ExprContext.class,0);
28610 		}
28611 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28612 		public TerminalNode COMMA_(int i) {
28613 			return getToken(SQLServerStatementParser.COMMA_, i);
28614 		}
28615 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
28616 		public TerminalNode REORGANIZE() { return getToken(SQLServerStatementParser.REORGANIZE, 0); }
28617 		public ReorganizeOptionContext reorganizeOption() {
28618 			return getRuleContext(ReorganizeOptionContext.class,0);
28619 		}
28620 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
28621 		public List<SetIndexOptionContext> setIndexOption() {
28622 			return getRuleContexts(SetIndexOptionContext.class);
28623 		}
28624 		public SetIndexOptionContext setIndexOption(int i) {
28625 			return getRuleContext(SetIndexOptionContext.class,i);
28626 		}
28627 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
28628 		public List<ResumableIndexOptionsContext> resumableIndexOptions() {
28629 			return getRuleContexts(ResumableIndexOptionsContext.class);
28630 		}
28631 		public ResumableIndexOptionsContext resumableIndexOptions(int i) {
28632 			return getRuleContext(ResumableIndexOptionsContext.class,i);
28633 		}
28634 		public TerminalNode PAUSE() { return getToken(SQLServerStatementParser.PAUSE, 0); }
28635 		public TerminalNode ABORT() { return getToken(SQLServerStatementParser.ABORT, 0); }
28636 		public AlterIndexClauseContext(ParserRuleContext parent, int invokingState) {
28637 			super(parent, invokingState);
28638 		}
28639 		@Override public int getRuleIndex() { return RULE_alterIndexClause; }
28640 		@Override
28641 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28642 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterIndexClause(this);
28643 			else return visitor.visitChildren(this);
28644 		}
28645 	}
28646 
28647 	public final AlterIndexClauseContext alterIndexClause() throws RecognitionException {
28648 		AlterIndexClauseContext _localctx = new AlterIndexClauseContext(_ctx, getState());
28649 		enterRule(_localctx, 578, RULE_alterIndexClause);
28650 		int _la;
28651 		try {
28652 			setState(4084);
28653 			_errHandler.sync(this);
28654 			switch (_input.LA(1)) {
28655 			case REBUILD:
28656 				enterOuterAlt(_localctx, 1);
28657 				{
28658 				setState(4022);
28659 				match(REBUILD);
28660 				setState(4029);
28661 				_errHandler.sync(this);
28662 				_la = _input.LA(1);
28663 				if (_la==PARTITION) {
28664 					{
28665 					setState(4023);
28666 					match(PARTITION);
28667 					setState(4024);
28668 					match(EQ_);
28669 					setState(4027);
28670 					_errHandler.sync(this);
28671 					switch (_input.LA(1)) {
28672 					case ALL:
28673 						{
28674 						setState(4025);
28675 						match(ALL);
28676 						}
28677 						break;
28678 					case NOT_:
28679 					case TILDE_:
28680 					case PLUS_:
28681 					case MINUS_:
28682 					case LP_:
28683 					case LBE_:
28684 					case QUESTION_:
28685 					case DOLLAR_:
28686 					case TRUNCATE:
28687 					case SCHEMA:
28688 					case FUNCTION:
28689 					case TRIGGER:
28690 					case CASE:
28691 					case CAST:
28692 					case IF:
28693 					case NOT:
28694 					case NULL:
28695 					case TRUE:
28696 					case FALSE:
28697 					case EXISTS:
28698 					case GROUP:
28699 					case LIMIT:
28700 					case OFFSET:
28701 					case SAVEPOINT:
28702 					case BOOLEAN:
28703 					case CHAR:
28704 					case ARRAY:
28705 					case INTERVAL:
28706 					case DATE:
28707 					case TIME:
28708 					case TIMESTAMP:
28709 					case LOCALTIME:
28710 					case LOCALTIMESTAMP:
28711 					case QUARTER:
28712 					case WEEK:
28713 					case DAY:
28714 					case MICROSECOND:
28715 					case MAX:
28716 					case MIN:
28717 					case SUM:
28718 					case COUNT:
28719 					case AVG:
28720 					case ENABLE:
28721 					case DISABLE:
28722 					case INSTANCE:
28723 					case DO:
28724 					case DEFINER:
28725 					case SQL:
28726 					case CASCADED:
28727 					case LOCAL:
28728 					case NEXT:
28729 					case NAME:
28730 					case INTEGER:
28731 					case TYPE:
28732 					case READ_ONLY:
28733 					case DATABASE:
28734 					case DATEPART:
28735 					case PASSWORD:
28736 					case BINARY:
28737 					case HIDDEN_:
28738 					case MOD:
28739 					case PARTITION:
28740 					case PARTITIONS:
28741 					case TOP:
28742 					case ROW:
28743 					case ROWS:
28744 					case XOR:
28745 					case ALWAYS:
28746 					case ROLE:
28747 					case START:
28748 					case ALGORITHM:
28749 					case AUTO:
28750 					case BLOCKERS:
28751 					case CLUSTERED:
28752 					case NONCLUSTERED:
28753 					case COLUMNSTORE:
28754 					case CONTENT:
28755 					case CONVERT:
28756 					case YEARS:
28757 					case MONTHS:
28758 					case WEEKS:
28759 					case DAYS:
28760 					case MINUTES:
28761 					case DENY:
28762 					case DETERMINISTIC:
28763 					case DISTRIBUTION:
28764 					case DOCUMENT:
28765 					case DURABILITY:
28766 					case ENCRYPTED:
28767 					case FILESTREAM:
28768 					case FILETABLE:
28769 					case FILLFACTOR:
28770 					case FOLLOWING:
28771 					case HASH:
28772 					case HEAP:
28773 					case INBOUND:
28774 					case OUTBOUND:
28775 					case UNBOUNDED:
28776 					case INFINITE:
28777 					case LOGIN:
28778 					case MASKED:
28779 					case MAXDOP:
28780 					case MOVE:
28781 					case NOCHECK:
28782 					case OBJECT:
28783 					case OFF:
28784 					case ONLINE:
28785 					case OVER:
28786 					case PAGE:
28787 					case PAUSED:
28788 					case PERIOD:
28789 					case PERSISTED:
28790 					case PRECEDING:
28791 					case RANDOMIZED:
28792 					case RANGE:
28793 					case REBUILD:
28794 					case REPLICATE:
28795 					case REPLICATION:
28796 					case RESUMABLE:
28797 					case ROWGUIDCOL:
28798 					case SAVE:
28799 					case SELF:
28800 					case SPARSE:
28801 					case SWITCH:
28802 					case TRAN:
28803 					case TRANCOUNT:
28804 					case CONTROL:
28805 					case CONCAT:
28806 					case TAKE:
28807 					case OWNERSHIP:
28808 					case DEFINITION:
28809 					case APPLICATION:
28810 					case ASSEMBLY:
28811 					case SYMMETRIC:
28812 					case ASYMMETRIC:
28813 					case SERVER:
28814 					case RECEIVE:
28815 					case CHANGE:
28816 					case TRACE:
28817 					case TRACKING:
28818 					case RESOURCES:
28819 					case SETTINGS:
28820 					case STATE:
28821 					case AVAILABILITY:
28822 					case CREDENTIAL:
28823 					case ENDPOINT:
28824 					case EVENT:
28825 					case NOTIFICATION:
28826 					case LINKED:
28827 					case AUDIT:
28828 					case DDL:
28829 					case XML:
28830 					case IMPERSONATE:
28831 					case SECURABLES:
28832 					case AUTHENTICATE:
28833 					case EXTERNAL:
28834 					case ACCESS:
28835 					case ADMINISTER:
28836 					case BULK:
28837 					case OPERATIONS:
28838 					case UNSAFE:
28839 					case SHUTDOWN:
28840 					case SCOPED:
28841 					case CONFIGURATION:
28842 					case DATASPACE:
28843 					case SERVICE:
28844 					case CERTIFICATE:
28845 					case CONTRACT:
28846 					case ENCRYPTION:
28847 					case MASTER:
28848 					case DATA:
28849 					case SOURCE:
28850 					case FILE:
28851 					case FORMAT:
28852 					case LIBRARY:
28853 					case FULLTEXT:
28854 					case MASK:
28855 					case UNMASK:
28856 					case MESSAGE:
28857 					case REMOTE:
28858 					case BINDING:
28859 					case ROUTE:
28860 					case SECURITY:
28861 					case POLICY:
28862 					case AGGREGATE:
28863 					case QUEUE:
28864 					case RULE:
28865 					case SYNONYM:
28866 					case COLLECTION:
28867 					case SCRIPT:
28868 					case KILL:
28869 					case BACKUP:
28870 					case LOG:
28871 					case SHOWPLAN:
28872 					case SUBSCRIBE:
28873 					case QUERY:
28874 					case NOTIFICATIONS:
28875 					case CHECKPOINT:
28876 					case SEQUENCE:
28877 					case ABORT_AFTER_WAIT:
28878 					case ALLOW_PAGE_LOCKS:
28879 					case ALLOW_ROW_LOCKS:
28880 					case ALL_SPARSE_COLUMNS:
28881 					case BUCKET_COUNT:
28882 					case COLUMNSTORE_ARCHIVE:
28883 					case COLUMN_ENCRYPTION_KEY:
28884 					case COLUMN_SET:
28885 					case COMPRESSION_DELAY:
28886 					case DATABASE_DEAULT:
28887 					case DATA_COMPRESSION:
28888 					case DATA_CONSISTENCY_CHECK:
28889 					case ENCRYPTION_TYPE:
28890 					case SYSTEM_TIME:
28891 					case SYSTEM_VERSIONING:
28892 					case TEXTIMAGE_ON:
28893 					case WAIT_AT_LOW_PRIORITY:
28894 					case STATISTICS_INCREMENTAL:
28895 					case STATISTICS_NORECOMPUTE:
28896 					case ROUND_ROBIN:
28897 					case SCHEMA_AND_DATA:
28898 					case SCHEMA_ONLY:
28899 					case SORT_IN_TEMPDB:
28900 					case IGNORE_DUP_KEY:
28901 					case IMPLICIT_TRANSACTIONS:
28902 					case MAX_DURATION:
28903 					case MEMORY_OPTIMIZED:
28904 					case MIGRATION_STATE:
28905 					case PAD_INDEX:
28906 					case REMOTE_DATA_ARCHIVE:
28907 					case FILESTREAM_ON:
28908 					case FILETABLE_COLLATE_FILENAME:
28909 					case FILETABLE_DIRECTORY:
28910 					case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
28911 					case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
28912 					case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
28913 					case FILTER_PREDICATE:
28914 					case HISTORY_RETENTION_PERIOD:
28915 					case HISTORY_TABLE:
28916 					case LOCK_ESCALATION:
28917 					case DROP_EXISTING:
28918 					case ROW_NUMBER:
28919 					case FIRST:
28920 					case DATETIME2:
28921 					case OUTPUT:
28922 					case INSERTED:
28923 					case DELETED:
28924 					case FILENAME:
28925 					case MAXSIZE:
28926 					case FILEGROWTH:
28927 					case UNLIMITED:
28928 					case KB:
28929 					case MB:
28930 					case GB:
28931 					case TB:
28932 					case MEMORY_OPTIMIZED_DATA:
28933 					case FILEGROUP:
28934 					case NON_TRANSACTED_ACCESS:
28935 					case DB_CHAINING:
28936 					case TRUSTWORTHY:
28937 					case FORWARD_ONLY:
28938 					case KEYSET:
28939 					case FAST_FORWARD:
28940 					case SCROLL_LOCKS:
28941 					case OPTIMISTIC:
28942 					case TYPE_WARNING:
28943 					case SCHEMABINDING:
28944 					case CALLER:
28945 					case OWNER:
28946 					case SNAPSHOT:
28947 					case REPEATABLE:
28948 					case SERIALIZABLE:
28949 					case NATIVE_COMPILATION:
28950 					case VIEW_METADATA:
28951 					case INSTEAD:
28952 					case APPEND:
28953 					case INCREMENT:
28954 					case CACHE:
28955 					case MINVALUE:
28956 					case MAXVALUE:
28957 					case RESTART:
28958 					case LOB_COMPACTION:
28959 					case COMPRESS_ALL_ROW_GROUPS:
28960 					case REORGANIZE:
28961 					case RESUME:
28962 					case PAUSE:
28963 					case ABORT:
28964 					case ACCELERATED_DATABASE_RECOVERY:
28965 					case PERSISTENT_VERSION_STORE_FILEGROUP:
28966 					case IMMEDIATE:
28967 					case NO_WAIT:
28968 					case TARGET_RECOVERY_TIME:
28969 					case SECONDS:
28970 					case HONOR_BROKER_PRIORITY:
28971 					case ERROR_BROKER_CONVERSATIONS:
28972 					case NEW_BROKER:
28973 					case DISABLE_BROKER:
28974 					case ENABLE_BROKER:
28975 					case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
28976 					case READ_COMMITTED_SNAPSHOT:
28977 					case ALLOW_SNAPSHOT_ISOLATION:
28978 					case RECURSIVE_TRIGGERS:
28979 					case QUOTED_IDENTIFIER:
28980 					case NUMERIC_ROUNDABORT:
28981 					case CONCAT_NULL_YIELDS_NULL:
28982 					case COMPATIBILITY_LEVEL:
28983 					case ARITHABORT:
28984 					case ANSI_WARNINGS:
28985 					case ANSI_PADDING:
28986 					case ANSI_NULLS:
28987 					case ANSI_NULL_DEFAULT:
28988 					case PAGE_VERIFY:
28989 					case CHECKSUM:
28990 					case TORN_PAGE_DETECTION:
28991 					case BULK_LOGGED:
28992 					case RECOVERY:
28993 					case TOTAL_EXECUTION_CPU_TIME_MS:
28994 					case TOTAL_COMPILE_CPU_TIME_MS:
28995 					case STALE_CAPTURE_POLICY_THRESHOLD:
28996 					case EXECUTION_COUNT:
28997 					case QUERY_CAPTURE_POLICY:
28998 					case WAIT_STATS_CAPTURE_MODE:
28999 					case MAX_PLANS_PER_QUERY:
29000 					case QUERY_CAPTURE_MODE:
29001 					case SIZE_BASED_CLEANUP_MODE:
29002 					case INTERVAL_LENGTH_MINUTES:
29003 					case MAX_STORAGE_SIZE_MB:
29004 					case DATA_FLUSH_INTERVAL_SECONDS:
29005 					case CLEANUP_POLICY:
29006 					case CUSTOM:
29007 					case STALE_QUERY_THRESHOLD_DAYS:
29008 					case OPERATION_MODE:
29009 					case QUERY_STORE:
29010 					case CURSOR_DEFAULT:
29011 					case GLOBAL:
29012 					case CURSOR_CLOSE_ON_COMMIT:
29013 					case HOURS:
29014 					case CHANGE_RETENTION:
29015 					case AUTO_CLEANUP:
29016 					case CHANGE_TRACKING:
29017 					case AUTOMATIC_TUNING:
29018 					case FORCE_LAST_GOOD_PLAN:
29019 					case AUTO_UPDATE_STATISTICS_ASYNC:
29020 					case AUTO_UPDATE_STATISTICS:
29021 					case AUTO_SHRINK:
29022 					case AUTO_CREATE_STATISTICS:
29023 					case INCREMENTAL:
29024 					case AUTO_CLOSE:
29025 					case DATA_RETENTION:
29026 					case TEMPORAL_HISTORY_RETENTION:
29027 					case EDITION:
29028 					case MIXED_PAGE_ALLOCATION:
29029 					case DISABLED:
29030 					case ALLOWED:
29031 					case HADR:
29032 					case MULTI_USER:
29033 					case RESTRICTED_USER:
29034 					case SINGLE_USER:
29035 					case OFFLINE:
29036 					case EMERGENCY:
29037 					case SUSPEND:
29038 					case DATE_CORRELATION_OPTIMIZATION:
29039 					case ELASTIC_POOL:
29040 					case SERVICE_OBJECTIVE:
29041 					case DATABASE_NAME:
29042 					case ALLOW_CONNECTIONS:
29043 					case GEO:
29044 					case NAMED:
29045 					case DATEFIRST:
29046 					case BACKUP_STORAGE_REDUNDANCY:
29047 					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
29048 					case SECONDARY:
29049 					case FAILOVER:
29050 					case DEFAULT_FULLTEXT_LANGUAGE:
29051 					case DEFAULT_LANGUAGE:
29052 					case INLINE:
29053 					case NESTED_TRIGGERS:
29054 					case TRANSFORM_NOISE_WORDS:
29055 					case TWO_DIGIT_YEAR_CUTOFF:
29056 					case PERSISTENT_LOG_BUFFER:
29057 					case DIRECTORY_NAME:
29058 					case DATEFORMAT:
29059 					case DELAYED_DURABILITY:
29060 					case AUTHORIZATION:
29061 					case TRANSFER:
29062 					case SEARCH:
29063 					case MEMBER:
29064 					case IDENTIFIER_:
29065 					case DELIMITED_IDENTIFIER_:
29066 					case STRING_:
29067 					case NUMBER_:
29068 					case HEX_DIGIT_:
29069 					case BIT_NUM_:
29070 					case NCHAR_TEXT:
29071 						{
29072 						setState(4026);
29073 						expr(0);
29074 						}
29075 						break;
29076 					default:
29077 						throw new NoViableAltException(this);
29078 					}
29079 					}
29080 				}
29081 
29082 				setState(4043);
29083 				_errHandler.sync(this);
29084 				_la = _input.LA(1);
29085 				if (_la==WITH) {
29086 					{
29087 					setState(4031);
29088 					match(WITH);
29089 					setState(4032);
29090 					match(LP_);
29091 					setState(4033);
29092 					relationalIndexOption();
29093 					setState(4038);
29094 					_errHandler.sync(this);
29095 					_la = _input.LA(1);
29096 					while (_la==COMMA_) {
29097 						{
29098 						{
29099 						setState(4034);
29100 						match(COMMA_);
29101 						setState(4035);
29102 						relationalIndexOption();
29103 						}
29104 						}
29105 						setState(4040);
29106 						_errHandler.sync(this);
29107 						_la = _input.LA(1);
29108 					}
29109 					setState(4041);
29110 					match(RP_);
29111 					}
29112 				}
29113 
29114 				}
29115 				break;
29116 			case DISABLE:
29117 				enterOuterAlt(_localctx, 2);
29118 				{
29119 				setState(4045);
29120 				match(DISABLE);
29121 				}
29122 				break;
29123 			case REORGANIZE:
29124 				enterOuterAlt(_localctx, 3);
29125 				{
29126 				setState(4046);
29127 				match(REORGANIZE);
29128 				setState(4050);
29129 				_errHandler.sync(this);
29130 				_la = _input.LA(1);
29131 				if (_la==PARTITION) {
29132 					{
29133 					setState(4047);
29134 					match(PARTITION);
29135 					setState(4048);
29136 					match(EQ_);
29137 					setState(4049);
29138 					expr(0);
29139 					}
29140 				}
29141 
29142 				setState(4057);
29143 				_errHandler.sync(this);
29144 				_la = _input.LA(1);
29145 				if (_la==WITH) {
29146 					{
29147 					setState(4052);
29148 					match(WITH);
29149 					setState(4053);
29150 					match(LP_);
29151 					setState(4054);
29152 					reorganizeOption();
29153 					setState(4055);
29154 					match(RP_);
29155 					}
29156 				}
29157 
29158 				}
29159 				break;
29160 			case SET:
29161 				enterOuterAlt(_localctx, 4);
29162 				{
29163 				setState(4059);
29164 				match(SET);
29165 				setState(4060);
29166 				match(LP_);
29167 				setState(4061);
29168 				setIndexOption();
29169 				{
29170 				setState(4062);
29171 				match(COMMA_);
29172 				setState(4063);
29173 				setIndexOption();
29174 				}
29175 				setState(4065);
29176 				match(RP_);
29177 				}
29178 				break;
29179 			case RESUME:
29180 				enterOuterAlt(_localctx, 5);
29181 				{
29182 				setState(4067);
29183 				match(RESUME);
29184 				setState(4080);
29185 				_errHandler.sync(this);
29186 				_la = _input.LA(1);
29187 				if (_la==WITH) {
29188 					{
29189 					setState(4068);
29190 					match(WITH);
29191 					setState(4069);
29192 					match(LP_);
29193 					setState(4070);
29194 					resumableIndexOptions();
29195 					setState(4075);
29196 					_errHandler.sync(this);
29197 					_la = _input.LA(1);
29198 					while (_la==COMMA_) {
29199 						{
29200 						{
29201 						setState(4071);
29202 						match(COMMA_);
29203 						setState(4072);
29204 						resumableIndexOptions();
29205 						}
29206 						}
29207 						setState(4077);
29208 						_errHandler.sync(this);
29209 						_la = _input.LA(1);
29210 					}
29211 					setState(4078);
29212 					match(RP_);
29213 					}
29214 				}
29215 
29216 				}
29217 				break;
29218 			case PAUSE:
29219 				enterOuterAlt(_localctx, 6);
29220 				{
29221 				setState(4082);
29222 				match(PAUSE);
29223 				}
29224 				break;
29225 			case ABORT:
29226 				enterOuterAlt(_localctx, 7);
29227 				{
29228 				setState(4083);
29229 				match(ABORT);
29230 				}
29231 				break;
29232 			default:
29233 				throw new NoViableAltException(this);
29234 			}
29235 		}
29236 		catch (RecognitionException re) {
29237 			_localctx.exception = re;
29238 			_errHandler.reportError(this, re);
29239 			_errHandler.recover(this, re);
29240 		}
29241 		finally {
29242 			exitRule();
29243 		}
29244 		return _localctx;
29245 	}
29246 
29247 	public static class RelationalIndexOptionContext extends ParserRuleContext {
29248 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
29249 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
29250 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
29251 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
29252 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
29253 		public ExprContext expr() {
29254 			return getRuleContext(ExprContext.class,0);
29255 		}
29256 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
29257 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
29258 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
29259 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
29260 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
29261 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
29262 		public LowPriorityLockWaitContext lowPriorityLockWait() {
29263 			return getRuleContext(LowPriorityLockWaitContext.class,0);
29264 		}
29265 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
29266 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
29267 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
29268 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
29269 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
29270 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
29271 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
29272 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
29273 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
29274 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
29275 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
29276 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
29277 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
29278 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
29279 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
29280 		public List<PartitionNumberRangeContext> partitionNumberRange() {
29281 			return getRuleContexts(PartitionNumberRangeContext.class);
29282 		}
29283 		public PartitionNumberRangeContext partitionNumberRange(int i) {
29284 			return getRuleContext(PartitionNumberRangeContext.class,i);
29285 		}
29286 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29287 		public TerminalNode COMMA_(int i) {
29288 			return getToken(SQLServerStatementParser.COMMA_, i);
29289 		}
29290 		public RelationalIndexOptionContext(ParserRuleContext parent, int invokingState) {
29291 			super(parent, invokingState);
29292 		}
29293 		@Override public int getRuleIndex() { return RULE_relationalIndexOption; }
29294 		@Override
29295 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29296 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRelationalIndexOption(this);
29297 			else return visitor.visitChildren(this);
29298 		}
29299 	}
29300 
29301 	public final RelationalIndexOptionContext relationalIndexOption() throws RecognitionException {
29302 		RelationalIndexOptionContext _localctx = new RelationalIndexOptionContext(_ctx, getState());
29303 		enterRule(_localctx, 580, RULE_relationalIndexOption);
29304 		int _la;
29305 		try {
29306 			int _alt;
29307 			setState(4153);
29308 			_errHandler.sync(this);
29309 			switch (_input.LA(1)) {
29310 			case PAD_INDEX:
29311 				enterOuterAlt(_localctx, 1);
29312 				{
29313 				setState(4086);
29314 				match(PAD_INDEX);
29315 				setState(4087);
29316 				match(EQ_);
29317 				setState(4088);
29318 				_la = _input.LA(1);
29319 				if ( !(_la==ON || _la==OFF) ) {
29320 				_errHandler.recoverInline(this);
29321 				}
29322 				else {
29323 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29324 					_errHandler.reportMatch(this);
29325 					consume();
29326 				}
29327 				}
29328 				break;
29329 			case FILLFACTOR:
29330 				enterOuterAlt(_localctx, 2);
29331 				{
29332 				setState(4089);
29333 				match(FILLFACTOR);
29334 				setState(4090);
29335 				match(EQ_);
29336 				setState(4091);
29337 				expr(0);
29338 				}
29339 				break;
29340 			case SORT_IN_TEMPDB:
29341 				enterOuterAlt(_localctx, 3);
29342 				{
29343 				setState(4092);
29344 				match(SORT_IN_TEMPDB);
29345 				setState(4093);
29346 				match(EQ_);
29347 				setState(4094);
29348 				_la = _input.LA(1);
29349 				if ( !(_la==ON || _la==OFF) ) {
29350 				_errHandler.recoverInline(this);
29351 				}
29352 				else {
29353 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29354 					_errHandler.reportMatch(this);
29355 					consume();
29356 				}
29357 				}
29358 				break;
29359 			case IGNORE_DUP_KEY:
29360 				enterOuterAlt(_localctx, 4);
29361 				{
29362 				setState(4095);
29363 				match(IGNORE_DUP_KEY);
29364 				setState(4096);
29365 				match(EQ_);
29366 				setState(4097);
29367 				_la = _input.LA(1);
29368 				if ( !(_la==ON || _la==OFF) ) {
29369 				_errHandler.recoverInline(this);
29370 				}
29371 				else {
29372 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29373 					_errHandler.reportMatch(this);
29374 					consume();
29375 				}
29376 				}
29377 				break;
29378 			case STATISTICS_NORECOMPUTE:
29379 				enterOuterAlt(_localctx, 5);
29380 				{
29381 				setState(4098);
29382 				match(STATISTICS_NORECOMPUTE);
29383 				setState(4099);
29384 				match(EQ_);
29385 				setState(4100);
29386 				_la = _input.LA(1);
29387 				if ( !(_la==ON || _la==OFF) ) {
29388 				_errHandler.recoverInline(this);
29389 				}
29390 				else {
29391 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29392 					_errHandler.reportMatch(this);
29393 					consume();
29394 				}
29395 				}
29396 				break;
29397 			case STATISTICS_INCREMENTAL:
29398 				enterOuterAlt(_localctx, 6);
29399 				{
29400 				setState(4101);
29401 				match(STATISTICS_INCREMENTAL);
29402 				setState(4102);
29403 				match(EQ_);
29404 				setState(4103);
29405 				_la = _input.LA(1);
29406 				if ( !(_la==ON || _la==OFF) ) {
29407 				_errHandler.recoverInline(this);
29408 				}
29409 				else {
29410 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29411 					_errHandler.reportMatch(this);
29412 					consume();
29413 				}
29414 				}
29415 				break;
29416 			case DROP_EXISTING:
29417 				enterOuterAlt(_localctx, 7);
29418 				{
29419 				setState(4104);
29420 				match(DROP_EXISTING);
29421 				setState(4105);
29422 				match(EQ_);
29423 				setState(4106);
29424 				_la = _input.LA(1);
29425 				if ( !(_la==ON || _la==OFF) ) {
29426 				_errHandler.recoverInline(this);
29427 				}
29428 				else {
29429 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29430 					_errHandler.reportMatch(this);
29431 					consume();
29432 				}
29433 				}
29434 				break;
29435 			case ONLINE:
29436 				enterOuterAlt(_localctx, 8);
29437 				{
29438 				setState(4107);
29439 				match(ONLINE);
29440 				setState(4108);
29441 				match(EQ_);
29442 				setState(4114);
29443 				_errHandler.sync(this);
29444 				switch (_input.LA(1)) {
29445 				case ON:
29446 					{
29447 					setState(4109);
29448 					match(ON);
29449 					setState(4111);
29450 					_errHandler.sync(this);
29451 					_la = _input.LA(1);
29452 					if (_la==WAIT_AT_LOW_PRIORITY) {
29453 						{
29454 						setState(4110);
29455 						lowPriorityLockWait();
29456 						}
29457 					}
29458 
29459 					}
29460 					break;
29461 				case OFF:
29462 					{
29463 					setState(4113);
29464 					match(OFF);
29465 					}
29466 					break;
29467 				default:
29468 					throw new NoViableAltException(this);
29469 				}
29470 				}
29471 				break;
29472 			case RESUMABLE:
29473 				enterOuterAlt(_localctx, 9);
29474 				{
29475 				setState(4116);
29476 				match(RESUMABLE);
29477 				setState(4117);
29478 				match(EQ_);
29479 				setState(4118);
29480 				_la = _input.LA(1);
29481 				if ( !(_la==ON || _la==OFF) ) {
29482 				_errHandler.recoverInline(this);
29483 				}
29484 				else {
29485 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29486 					_errHandler.reportMatch(this);
29487 					consume();
29488 				}
29489 				}
29490 				break;
29491 			case MAX_DURATION:
29492 				enterOuterAlt(_localctx, 10);
29493 				{
29494 				setState(4119);
29495 				match(MAX_DURATION);
29496 				setState(4120);
29497 				match(EQ_);
29498 				setState(4121);
29499 				expr(0);
29500 				setState(4123);
29501 				_errHandler.sync(this);
29502 				_la = _input.LA(1);
29503 				if (_la==MINUTES) {
29504 					{
29505 					setState(4122);
29506 					match(MINUTES);
29507 					}
29508 				}
29509 
29510 				}
29511 				break;
29512 			case ALLOW_ROW_LOCKS:
29513 				enterOuterAlt(_localctx, 11);
29514 				{
29515 				setState(4125);
29516 				match(ALLOW_ROW_LOCKS);
29517 				setState(4126);
29518 				match(EQ_);
29519 				setState(4127);
29520 				_la = _input.LA(1);
29521 				if ( !(_la==ON || _la==OFF) ) {
29522 				_errHandler.recoverInline(this);
29523 				}
29524 				else {
29525 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29526 					_errHandler.reportMatch(this);
29527 					consume();
29528 				}
29529 				}
29530 				break;
29531 			case ALLOW_PAGE_LOCKS:
29532 				enterOuterAlt(_localctx, 12);
29533 				{
29534 				setState(4128);
29535 				match(ALLOW_PAGE_LOCKS);
29536 				setState(4129);
29537 				match(EQ_);
29538 				setState(4130);
29539 				_la = _input.LA(1);
29540 				if ( !(_la==ON || _la==OFF) ) {
29541 				_errHandler.recoverInline(this);
29542 				}
29543 				else {
29544 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29545 					_errHandler.reportMatch(this);
29546 					consume();
29547 				}
29548 				}
29549 				break;
29550 			case OPTIMIZE_FOR_SEQUENTIAL_KEY:
29551 				enterOuterAlt(_localctx, 13);
29552 				{
29553 				setState(4131);
29554 				match(OPTIMIZE_FOR_SEQUENTIAL_KEY);
29555 				setState(4132);
29556 				match(EQ_);
29557 				setState(4133);
29558 				_la = _input.LA(1);
29559 				if ( !(_la==ON || _la==OFF) ) {
29560 				_errHandler.recoverInline(this);
29561 				}
29562 				else {
29563 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29564 					_errHandler.reportMatch(this);
29565 					consume();
29566 				}
29567 				}
29568 				break;
29569 			case MAXDOP:
29570 				enterOuterAlt(_localctx, 14);
29571 				{
29572 				setState(4134);
29573 				match(MAXDOP);
29574 				setState(4135);
29575 				match(EQ_);
29576 				setState(4136);
29577 				expr(0);
29578 				}
29579 				break;
29580 			case DATA_COMPRESSION:
29581 				enterOuterAlt(_localctx, 15);
29582 				{
29583 				setState(4137);
29584 				match(DATA_COMPRESSION);
29585 				setState(4138);
29586 				match(EQ_);
29587 				setState(4139);
29588 				_la = _input.LA(1);
29589 				if ( !(((((_la - 221)) & ~0x3f) == 0 && ((1L << (_la - 221)) & ((1L << (ROW - 221)) | (1L << (COLUMNSTORE - 221)) | (1L << (NONE - 221)) | (1L << (PAGE - 221)))) != 0) || _la==COLUMNSTORE_ARCHIVE) ) {
29590 				_errHandler.recoverInline(this);
29591 				}
29592 				else {
29593 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29594 					_errHandler.reportMatch(this);
29595 					consume();
29596 				}
29597 				setState(4151);
29598 				_errHandler.sync(this);
29599 				_la = _input.LA(1);
29600 				if (_la==ON) {
29601 					{
29602 					setState(4140);
29603 					match(ON);
29604 					setState(4141);
29605 					match(PARTITIONS);
29606 					setState(4142);
29607 					match(LP_);
29608 					setState(4143);
29609 					partitionNumberRange();
29610 					setState(4148);
29611 					_errHandler.sync(this);
29612 					_alt = getInterpreter().adaptivePredict(_input,441,_ctx);
29613 					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
29614 						if ( _alt==1 ) {
29615 							{
29616 							{
29617 							setState(4144);
29618 							match(COMMA_);
29619 							setState(4145);
29620 							partitionNumberRange();
29621 							}
29622 							} 
29623 						}
29624 						setState(4150);
29625 						_errHandler.sync(this);
29626 						_alt = getInterpreter().adaptivePredict(_input,441,_ctx);
29627 					}
29628 					}
29629 				}
29630 
29631 				}
29632 				break;
29633 			default:
29634 				throw new NoViableAltException(this);
29635 			}
29636 		}
29637 		catch (RecognitionException re) {
29638 			_localctx.exception = re;
29639 			_errHandler.reportError(this, re);
29640 			_errHandler.recover(this, re);
29641 		}
29642 		finally {
29643 			exitRule();
29644 		}
29645 		return _localctx;
29646 	}
29647 
29648 	public static class PartitionNumberRangeContext extends ParserRuleContext {
29649 		public List<ExprContext> expr() {
29650 			return getRuleContexts(ExprContext.class);
29651 		}
29652 		public ExprContext expr(int i) {
29653 			return getRuleContext(ExprContext.class,i);
29654 		}
29655 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
29656 		public PartitionNumberRangeContext(ParserRuleContext parent, int invokingState) {
29657 			super(parent, invokingState);
29658 		}
29659 		@Override public int getRuleIndex() { return RULE_partitionNumberRange; }
29660 		@Override
29661 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29662 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionNumberRange(this);
29663 			else return visitor.visitChildren(this);
29664 		}
29665 	}
29666 
29667 	public final PartitionNumberRangeContext partitionNumberRange() throws RecognitionException {
29668 		PartitionNumberRangeContext _localctx = new PartitionNumberRangeContext(_ctx, getState());
29669 		enterRule(_localctx, 582, RULE_partitionNumberRange);
29670 		int _la;
29671 		try {
29672 			enterOuterAlt(_localctx, 1);
29673 			{
29674 			setState(4155);
29675 			expr(0);
29676 			setState(4158);
29677 			_errHandler.sync(this);
29678 			_la = _input.LA(1);
29679 			if (_la==TO) {
29680 				{
29681 				setState(4156);
29682 				match(TO);
29683 				setState(4157);
29684 				expr(0);
29685 				}
29686 			}
29687 
29688 			}
29689 		}
29690 		catch (RecognitionException re) {
29691 			_localctx.exception = re;
29692 			_errHandler.reportError(this, re);
29693 			_errHandler.recover(this, re);
29694 		}
29695 		finally {
29696 			exitRule();
29697 		}
29698 		return _localctx;
29699 	}
29700 
29701 	public static class ReorganizeOptionContext extends ParserRuleContext {
29702 		public TerminalNode LOB_COMPACTION() { return getToken(SQLServerStatementParser.LOB_COMPACTION, 0); }
29703 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
29704 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
29705 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
29706 		public TerminalNode COMPRESS_ALL_ROW_GROUPS() { return getToken(SQLServerStatementParser.COMPRESS_ALL_ROW_GROUPS, 0); }
29707 		public ReorganizeOptionContext(ParserRuleContext parent, int invokingState) {
29708 			super(parent, invokingState);
29709 		}
29710 		@Override public int getRuleIndex() { return RULE_reorganizeOption; }
29711 		@Override
29712 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29713 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitReorganizeOption(this);
29714 			else return visitor.visitChildren(this);
29715 		}
29716 	}
29717 
29718 	public final ReorganizeOptionContext reorganizeOption() throws RecognitionException {
29719 		ReorganizeOptionContext _localctx = new ReorganizeOptionContext(_ctx, getState());
29720 		enterRule(_localctx, 584, RULE_reorganizeOption);
29721 		int _la;
29722 		try {
29723 			setState(4166);
29724 			_errHandler.sync(this);
29725 			switch (_input.LA(1)) {
29726 			case LOB_COMPACTION:
29727 				enterOuterAlt(_localctx, 1);
29728 				{
29729 				setState(4160);
29730 				match(LOB_COMPACTION);
29731 				setState(4161);
29732 				match(EQ_);
29733 				setState(4162);
29734 				_la = _input.LA(1);
29735 				if ( !(_la==ON || _la==OFF) ) {
29736 				_errHandler.recoverInline(this);
29737 				}
29738 				else {
29739 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29740 					_errHandler.reportMatch(this);
29741 					consume();
29742 				}
29743 				}
29744 				break;
29745 			case COMPRESS_ALL_ROW_GROUPS:
29746 				enterOuterAlt(_localctx, 2);
29747 				{
29748 				setState(4163);
29749 				match(COMPRESS_ALL_ROW_GROUPS);
29750 				setState(4164);
29751 				match(EQ_);
29752 				setState(4165);
29753 				_la = _input.LA(1);
29754 				if ( !(_la==ON || _la==OFF) ) {
29755 				_errHandler.recoverInline(this);
29756 				}
29757 				else {
29758 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29759 					_errHandler.reportMatch(this);
29760 					consume();
29761 				}
29762 				}
29763 				break;
29764 			default:
29765 				throw new NoViableAltException(this);
29766 			}
29767 		}
29768 		catch (RecognitionException re) {
29769 			_localctx.exception = re;
29770 			_errHandler.reportError(this, re);
29771 			_errHandler.recover(this, re);
29772 		}
29773 		finally {
29774 			exitRule();
29775 		}
29776 		return _localctx;
29777 	}
29778 
29779 	public static class SetIndexOptionContext extends ParserRuleContext {
29780 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
29781 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
29782 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
29783 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
29784 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
29785 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
29786 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
29787 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
29788 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
29789 		public ExprContext expr() {
29790 			return getRuleContext(ExprContext.class,0);
29791 		}
29792 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
29793 		public SetIndexOptionContext(ParserRuleContext parent, int invokingState) {
29794 			super(parent, invokingState);
29795 		}
29796 		@Override public int getRuleIndex() { return RULE_setIndexOption; }
29797 		@Override
29798 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29799 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetIndexOption(this);
29800 			else return visitor.visitChildren(this);
29801 		}
29802 	}
29803 
29804 	public final SetIndexOptionContext setIndexOption() throws RecognitionException {
29805 		SetIndexOptionContext _localctx = new SetIndexOptionContext(_ctx, getState());
29806 		enterRule(_localctx, 586, RULE_setIndexOption);
29807 		int _la;
29808 		try {
29809 			setState(4189);
29810 			_errHandler.sync(this);
29811 			switch (_input.LA(1)) {
29812 			case ALLOW_ROW_LOCKS:
29813 				enterOuterAlt(_localctx, 1);
29814 				{
29815 				setState(4168);
29816 				match(ALLOW_ROW_LOCKS);
29817 				setState(4169);
29818 				match(EQ_);
29819 				setState(4170);
29820 				_la = _input.LA(1);
29821 				if ( !(_la==ON || _la==OFF) ) {
29822 				_errHandler.recoverInline(this);
29823 				}
29824 				else {
29825 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29826 					_errHandler.reportMatch(this);
29827 					consume();
29828 				}
29829 				}
29830 				break;
29831 			case ALLOW_PAGE_LOCKS:
29832 				enterOuterAlt(_localctx, 2);
29833 				{
29834 				setState(4171);
29835 				match(ALLOW_PAGE_LOCKS);
29836 				setState(4172);
29837 				match(EQ_);
29838 				setState(4173);
29839 				_la = _input.LA(1);
29840 				if ( !(_la==ON || _la==OFF) ) {
29841 				_errHandler.recoverInline(this);
29842 				}
29843 				else {
29844 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29845 					_errHandler.reportMatch(this);
29846 					consume();
29847 				}
29848 				}
29849 				break;
29850 			case OPTIMIZE_FOR_SEQUENTIAL_KEY:
29851 				enterOuterAlt(_localctx, 3);
29852 				{
29853 				setState(4174);
29854 				match(OPTIMIZE_FOR_SEQUENTIAL_KEY);
29855 				setState(4175);
29856 				match(EQ_);
29857 				setState(4176);
29858 				_la = _input.LA(1);
29859 				if ( !(_la==ON || _la==OFF) ) {
29860 				_errHandler.recoverInline(this);
29861 				}
29862 				else {
29863 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29864 					_errHandler.reportMatch(this);
29865 					consume();
29866 				}
29867 				}
29868 				break;
29869 			case IGNORE_DUP_KEY:
29870 				enterOuterAlt(_localctx, 4);
29871 				{
29872 				setState(4177);
29873 				match(IGNORE_DUP_KEY);
29874 				setState(4178);
29875 				match(EQ_);
29876 				setState(4179);
29877 				_la = _input.LA(1);
29878 				if ( !(_la==ON || _la==OFF) ) {
29879 				_errHandler.recoverInline(this);
29880 				}
29881 				else {
29882 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29883 					_errHandler.reportMatch(this);
29884 					consume();
29885 				}
29886 				}
29887 				break;
29888 			case STATISTICS_NORECOMPUTE:
29889 				enterOuterAlt(_localctx, 5);
29890 				{
29891 				setState(4180);
29892 				match(STATISTICS_NORECOMPUTE);
29893 				setState(4181);
29894 				match(EQ_);
29895 				setState(4182);
29896 				_la = _input.LA(1);
29897 				if ( !(_la==ON || _la==OFF) ) {
29898 				_errHandler.recoverInline(this);
29899 				}
29900 				else {
29901 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29902 					_errHandler.reportMatch(this);
29903 					consume();
29904 				}
29905 				}
29906 				break;
29907 			case COMPRESSION_DELAY:
29908 				enterOuterAlt(_localctx, 6);
29909 				{
29910 				setState(4183);
29911 				match(COMPRESSION_DELAY);
29912 				setState(4184);
29913 				match(EQ_);
29914 				{
29915 				setState(4185);
29916 				expr(0);
29917 				setState(4187);
29918 				_errHandler.sync(this);
29919 				_la = _input.LA(1);
29920 				if (_la==MINUTES) {
29921 					{
29922 					setState(4186);
29923 					match(MINUTES);
29924 					}
29925 				}
29926 
29927 				}
29928 				}
29929 				break;
29930 			default:
29931 				throw new NoViableAltException(this);
29932 			}
29933 		}
29934 		catch (RecognitionException re) {
29935 			_localctx.exception = re;
29936 			_errHandler.reportError(this, re);
29937 			_errHandler.recover(this, re);
29938 		}
29939 		finally {
29940 			exitRule();
29941 		}
29942 		return _localctx;
29943 	}
29944 
29945 	public static class ResumableIndexOptionsContext extends ParserRuleContext {
29946 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
29947 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
29948 		public ExprContext expr() {
29949 			return getRuleContext(ExprContext.class,0);
29950 		}
29951 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
29952 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
29953 		public LowPriorityLockWaitContext lowPriorityLockWait() {
29954 			return getRuleContext(LowPriorityLockWaitContext.class,0);
29955 		}
29956 		public ResumableIndexOptionsContext(ParserRuleContext parent, int invokingState) {
29957 			super(parent, invokingState);
29958 		}
29959 		@Override public int getRuleIndex() { return RULE_resumableIndexOptions; }
29960 		@Override
29961 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29962 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitResumableIndexOptions(this);
29963 			else return visitor.visitChildren(this);
29964 		}
29965 	}
29966 
29967 	public final ResumableIndexOptionsContext resumableIndexOptions() throws RecognitionException {
29968 		ResumableIndexOptionsContext _localctx = new ResumableIndexOptionsContext(_ctx, getState());
29969 		enterRule(_localctx, 588, RULE_resumableIndexOptions);
29970 		int _la;
29971 		try {
29972 			setState(4201);
29973 			_errHandler.sync(this);
29974 			switch (_input.LA(1)) {
29975 			case MAXDOP:
29976 				enterOuterAlt(_localctx, 1);
29977 				{
29978 				setState(4191);
29979 				match(MAXDOP);
29980 				setState(4192);
29981 				match(EQ_);
29982 				setState(4193);
29983 				expr(0);
29984 				}
29985 				break;
29986 			case MAX_DURATION:
29987 				enterOuterAlt(_localctx, 2);
29988 				{
29989 				setState(4194);
29990 				match(MAX_DURATION);
29991 				setState(4195);
29992 				match(EQ_);
29993 				setState(4196);
29994 				expr(0);
29995 				setState(4198);
29996 				_errHandler.sync(this);
29997 				_la = _input.LA(1);
29998 				if (_la==MINUTES) {
29999 					{
30000 					setState(4197);
30001 					match(MINUTES);
30002 					}
30003 				}
30004 
30005 				}
30006 				break;
30007 			case WAIT_AT_LOW_PRIORITY:
30008 				enterOuterAlt(_localctx, 3);
30009 				{
30010 				setState(4200);
30011 				lowPriorityLockWait();
30012 				}
30013 				break;
30014 			default:
30015 				throw new NoViableAltException(this);
30016 			}
30017 		}
30018 		catch (RecognitionException re) {
30019 			_localctx.exception = re;
30020 			_errHandler.reportError(this, re);
30021 			_errHandler.recover(this, re);
30022 		}
30023 		finally {
30024 			exitRule();
30025 		}
30026 		return _localctx;
30027 	}
30028 
30029 	public static class AlterDatabaseClauseContext extends ParserRuleContext {
30030 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
30031 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
30032 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30033 		public DatabaseNameContext databaseName() {
30034 			return getRuleContext(DatabaseNameContext.class,0);
30035 		}
30036 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
30037 		public IgnoredIdentifierContext ignoredIdentifier() {
30038 			return getRuleContext(IgnoredIdentifierContext.class,0);
30039 		}
30040 		public FileAndFilegroupOptionsContext fileAndFilegroupOptions() {
30041 			return getRuleContext(FileAndFilegroupOptionsContext.class,0);
30042 		}
30043 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
30044 		public List<AlterDatabaseOptionSpecContext> alterDatabaseOptionSpec() {
30045 			return getRuleContexts(AlterDatabaseOptionSpecContext.class);
30046 		}
30047 		public AlterDatabaseOptionSpecContext alterDatabaseOptionSpec(int i) {
30048 			return getRuleContext(AlterDatabaseOptionSpecContext.class,i);
30049 		}
30050 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
30051 		public TerminalNode COMMA_(int i) {
30052 			return getToken(SQLServerStatementParser.COMMA_, i);
30053 		}
30054 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
30055 		public TerminationContext termination() {
30056 			return getRuleContext(TerminationContext.class,0);
30057 		}
30058 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
30059 		public List<EditionOptionsContext> editionOptions() {
30060 			return getRuleContexts(EditionOptionsContext.class);
30061 		}
30062 		public EditionOptionsContext editionOptions(int i) {
30063 			return getRuleContext(EditionOptionsContext.class,i);
30064 		}
30065 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
30066 		public TerminalNode BACKUP_STORAGE_REDUNDANCY() { return getToken(SQLServerStatementParser.BACKUP_STORAGE_REDUNDANCY, 0); }
30067 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
30068 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
30069 		public TerminalNode SECONDARY() { return getToken(SQLServerStatementParser.SECONDARY, 0); }
30070 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
30071 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
30072 		public List<AddSecondaryOptionContext> addSecondaryOption() {
30073 			return getRuleContexts(AddSecondaryOptionContext.class);
30074 		}
30075 		public AddSecondaryOptionContext addSecondaryOption(int i) {
30076 			return getRuleContext(AddSecondaryOptionContext.class,i);
30077 		}
30078 		public TerminalNode FAILOVER() { return getToken(SQLServerStatementParser.FAILOVER, 0); }
30079 		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(SQLServerStatementParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
30080 		public AlterDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
30081 			super(parent, invokingState);
30082 		}
30083 		@Override public int getRuleIndex() { return RULE_alterDatabaseClause; }
30084 		@Override
30085 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30086 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabaseClause(this);
30087 			else return visitor.visitChildren(this);
30088 		}
30089 	}
30090 
30091 	public final AlterDatabaseClauseContext alterDatabaseClause() throws RecognitionException {
30092 		AlterDatabaseClauseContext _localctx = new AlterDatabaseClauseContext(_ctx, getState());
30093 		enterRule(_localctx, 590, RULE_alterDatabaseClause);
30094 		int _la;
30095 		try {
30096 			setState(4257);
30097 			_errHandler.sync(this);
30098 			switch ( getInterpreter().adaptivePredict(_input,455,_ctx) ) {
30099 			case 1:
30100 				enterOuterAlt(_localctx, 1);
30101 				{
30102 				setState(4203);
30103 				match(MODIFY);
30104 				setState(4204);
30105 				match(NAME);
30106 				setState(4205);
30107 				match(EQ_);
30108 				setState(4206);
30109 				databaseName();
30110 				}
30111 				break;
30112 			case 2:
30113 				enterOuterAlt(_localctx, 2);
30114 				{
30115 				setState(4207);
30116 				match(COLLATE);
30117 				setState(4208);
30118 				ignoredIdentifier();
30119 				}
30120 				break;
30121 			case 3:
30122 				enterOuterAlt(_localctx, 3);
30123 				{
30124 				setState(4209);
30125 				fileAndFilegroupOptions();
30126 				}
30127 				break;
30128 			case 4:
30129 				enterOuterAlt(_localctx, 4);
30130 				{
30131 				setState(4210);
30132 				match(SET);
30133 				setState(4211);
30134 				alterDatabaseOptionSpec();
30135 				setState(4216);
30136 				_errHandler.sync(this);
30137 				_la = _input.LA(1);
30138 				while (_la==COMMA_) {
30139 					{
30140 					{
30141 					setState(4212);
30142 					match(COMMA_);
30143 					setState(4213);
30144 					alterDatabaseOptionSpec();
30145 					}
30146 					}
30147 					setState(4218);
30148 					_errHandler.sync(this);
30149 					_la = _input.LA(1);
30150 				}
30151 				setState(4221);
30152 				_errHandler.sync(this);
30153 				_la = _input.LA(1);
30154 				if (_la==WITH) {
30155 					{
30156 					setState(4219);
30157 					match(WITH);
30158 					setState(4220);
30159 					termination();
30160 					}
30161 				}
30162 
30163 				}
30164 				break;
30165 			case 5:
30166 				enterOuterAlt(_localctx, 5);
30167 				{
30168 				setState(4223);
30169 				match(MODIFY);
30170 				setState(4224);
30171 				match(LP_);
30172 				setState(4225);
30173 				editionOptions();
30174 				setState(4230);
30175 				_errHandler.sync(this);
30176 				_la = _input.LA(1);
30177 				while (_la==COMMA_) {
30178 					{
30179 					{
30180 					setState(4226);
30181 					match(COMMA_);
30182 					setState(4227);
30183 					editionOptions();
30184 					}
30185 					}
30186 					setState(4232);
30187 					_errHandler.sync(this);
30188 					_la = _input.LA(1);
30189 				}
30190 				setState(4233);
30191 				match(RP_);
30192 				}
30193 				break;
30194 			case 6:
30195 				enterOuterAlt(_localctx, 6);
30196 				{
30197 				setState(4235);
30198 				match(MODIFY);
30199 				setState(4236);
30200 				match(BACKUP_STORAGE_REDUNDANCY);
30201 				setState(4237);
30202 				match(EQ_);
30203 				setState(4238);
30204 				match(STRING_);
30205 				}
30206 				break;
30207 			case 7:
30208 				enterOuterAlt(_localctx, 7);
30209 				{
30210 				setState(4239);
30211 				match(ADD);
30212 				setState(4240);
30213 				match(SECONDARY);
30214 				setState(4241);
30215 				match(ON);
30216 				setState(4242);
30217 				match(SERVER);
30218 				setState(4243);
30219 				ignoredIdentifier();
30220 				setState(4253);
30221 				_errHandler.sync(this);
30222 				_la = _input.LA(1);
30223 				if (_la==WITH) {
30224 					{
30225 					setState(4244);
30226 					match(WITH);
30227 					setState(4245);
30228 					addSecondaryOption();
30229 					setState(4250);
30230 					_errHandler.sync(this);
30231 					_la = _input.LA(1);
30232 					while (_la==COMMA_) {
30233 						{
30234 						{
30235 						setState(4246);
30236 						match(COMMA_);
30237 						setState(4247);
30238 						addSecondaryOption();
30239 						}
30240 						}
30241 						setState(4252);
30242 						_errHandler.sync(this);
30243 						_la = _input.LA(1);
30244 					}
30245 					}
30246 				}
30247 
30248 				}
30249 				break;
30250 			case 8:
30251 				enterOuterAlt(_localctx, 8);
30252 				{
30253 				setState(4255);
30254 				match(FAILOVER);
30255 				}
30256 				break;
30257 			case 9:
30258 				enterOuterAlt(_localctx, 9);
30259 				{
30260 				setState(4256);
30261 				match(FORCE_FAILOVER_ALLOW_DATA_LOSS);
30262 				}
30263 				break;
30264 			}
30265 		}
30266 		catch (RecognitionException re) {
30267 			_localctx.exception = re;
30268 			_errHandler.reportError(this, re);
30269 			_errHandler.recover(this, re);
30270 		}
30271 		finally {
30272 			exitRule();
30273 		}
30274 		return _localctx;
30275 	}
30276 
30277 	public static class AddSecondaryOptionContext extends ParserRuleContext {
30278 		public Token SECONDARY_TYPE;
30279 		public TerminalNode ALLOW_CONNECTIONS() { return getToken(SQLServerStatementParser.ALLOW_CONNECTIONS, 0); }
30280 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
30281 		public TerminalNode EQ_(int i) {
30282 			return getToken(SQLServerStatementParser.EQ_, i);
30283 		}
30284 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
30285 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
30286 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
30287 		public ServiceObjectiveContext serviceObjective() {
30288 			return getRuleContext(ServiceObjectiveContext.class,0);
30289 		}
30290 		public TerminalNode DATABASE_NAME() { return getToken(SQLServerStatementParser.DATABASE_NAME, 0); }
30291 		public DatabaseNameContext databaseName() {
30292 			return getRuleContext(DatabaseNameContext.class,0);
30293 		}
30294 		public TerminalNode GEO() { return getToken(SQLServerStatementParser.GEO, 0); }
30295 		public TerminalNode NAMED() { return getToken(SQLServerStatementParser.NAMED, 0); }
30296 		public AddSecondaryOptionContext(ParserRuleContext parent, int invokingState) {
30297 			super(parent, invokingState);
30298 		}
30299 		@Override public int getRuleIndex() { return RULE_addSecondaryOption; }
30300 		@Override
30301 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30302 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddSecondaryOption(this);
30303 			else return visitor.visitChildren(this);
30304 		}
30305 	}
30306 
30307 	public final AddSecondaryOptionContext addSecondaryOption() throws RecognitionException {
30308 		AddSecondaryOptionContext _localctx = new AddSecondaryOptionContext(_ctx, getState());
30309 		enterRule(_localctx, 592, RULE_addSecondaryOption);
30310 		int _la;
30311 		try {
30312 			setState(4271);
30313 			_errHandler.sync(this);
30314 			switch (_input.LA(1)) {
30315 			case ALLOW_CONNECTIONS:
30316 				enterOuterAlt(_localctx, 1);
30317 				{
30318 				setState(4259);
30319 				match(ALLOW_CONNECTIONS);
30320 				setState(4260);
30321 				match(EQ_);
30322 				setState(4261);
30323 				_la = _input.LA(1);
30324 				if ( !(_la==ALL || _la==NO) ) {
30325 				_errHandler.recoverInline(this);
30326 				}
30327 				else {
30328 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30329 					_errHandler.reportMatch(this);
30330 					consume();
30331 				}
30332 				}
30333 				break;
30334 			case SERVICE_OBJECTIVE:
30335 				enterOuterAlt(_localctx, 2);
30336 				{
30337 				setState(4262);
30338 				match(SERVICE_OBJECTIVE);
30339 				setState(4263);
30340 				match(EQ_);
30341 				setState(4269);
30342 				_errHandler.sync(this);
30343 				switch (_input.LA(1)) {
30344 				case ELASTIC_POOL:
30345 				case STRING_:
30346 					{
30347 					setState(4264);
30348 					serviceObjective();
30349 					}
30350 					break;
30351 				case DATABASE_NAME:
30352 					{
30353 					setState(4265);
30354 					match(DATABASE_NAME);
30355 					setState(4266);
30356 					match(EQ_);
30357 					setState(4267);
30358 					databaseName();
30359 					}
30360 					break;
30361 				case GEO:
30362 				case NAMED:
30363 					{
30364 					setState(4268);
30365 					((AddSecondaryOptionContext)_localctx).SECONDARY_TYPE = _input.LT(1);
30366 					_la = _input.LA(1);
30367 					if ( !(_la==GEO || _la==NAMED) ) {
30368 						((AddSecondaryOptionContext)_localctx).SECONDARY_TYPE = (Token)_errHandler.recoverInline(this);
30369 					}
30370 					else {
30371 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30372 						_errHandler.reportMatch(this);
30373 						consume();
30374 					}
30375 					}
30376 					break;
30377 				default:
30378 					throw new NoViableAltException(this);
30379 				}
30380 				}
30381 				break;
30382 			default:
30383 				throw new NoViableAltException(this);
30384 			}
30385 		}
30386 		catch (RecognitionException re) {
30387 			_localctx.exception = re;
30388 			_errHandler.reportError(this, re);
30389 			_errHandler.recover(this, re);
30390 		}
30391 		finally {
30392 			exitRule();
30393 		}
30394 		return _localctx;
30395 	}
30396 
30397 	public static class EditionOptionsContext extends ParserRuleContext {
30398 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
30399 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30400 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
30401 		public TerminalNode MB() { return getToken(SQLServerStatementParser.MB, 0); }
30402 		public TerminalNode GB() { return getToken(SQLServerStatementParser.GB, 0); }
30403 		public TerminalNode EDITION() { return getToken(SQLServerStatementParser.EDITION, 0); }
30404 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
30405 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
30406 		public ServiceObjectiveContext serviceObjective() {
30407 			return getRuleContext(ServiceObjectiveContext.class,0);
30408 		}
30409 		public EditionOptionsContext(ParserRuleContext parent, int invokingState) {
30410 			super(parent, invokingState);
30411 		}
30412 		@Override public int getRuleIndex() { return RULE_editionOptions; }
30413 		@Override
30414 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30415 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEditionOptions(this);
30416 			else return visitor.visitChildren(this);
30417 		}
30418 	}
30419 
30420 	public final EditionOptionsContext editionOptions() throws RecognitionException {
30421 		EditionOptionsContext _localctx = new EditionOptionsContext(_ctx, getState());
30422 		enterRule(_localctx, 594, RULE_editionOptions);
30423 		int _la;
30424 		try {
30425 			setState(4286);
30426 			_errHandler.sync(this);
30427 			switch (_input.LA(1)) {
30428 			case MAXSIZE:
30429 				enterOuterAlt(_localctx, 1);
30430 				{
30431 				setState(4273);
30432 				match(MAXSIZE);
30433 				setState(4274);
30434 				match(EQ_);
30435 				setState(4275);
30436 				match(NUMBER_);
30437 				setState(4276);
30438 				_la = _input.LA(1);
30439 				if ( !(_la==MB || _la==GB) ) {
30440 				_errHandler.recoverInline(this);
30441 				}
30442 				else {
30443 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30444 					_errHandler.reportMatch(this);
30445 					consume();
30446 				}
30447 				}
30448 				break;
30449 			case EDITION:
30450 				enterOuterAlt(_localctx, 2);
30451 				{
30452 				setState(4277);
30453 				match(EDITION);
30454 				setState(4278);
30455 				match(EQ_);
30456 				setState(4279);
30457 				match(STRING_);
30458 				}
30459 				break;
30460 			case SERVICE_OBJECTIVE:
30461 				enterOuterAlt(_localctx, 3);
30462 				{
30463 				setState(4280);
30464 				match(SERVICE_OBJECTIVE);
30465 				setState(4281);
30466 				match(EQ_);
30467 				setState(4284);
30468 				_errHandler.sync(this);
30469 				switch ( getInterpreter().adaptivePredict(_input,458,_ctx) ) {
30470 				case 1:
30471 					{
30472 					setState(4282);
30473 					match(STRING_);
30474 					}
30475 					break;
30476 				case 2:
30477 					{
30478 					setState(4283);
30479 					serviceObjective();
30480 					}
30481 					break;
30482 				}
30483 				}
30484 				break;
30485 			default:
30486 				throw new NoViableAltException(this);
30487 			}
30488 		}
30489 		catch (RecognitionException re) {
30490 			_localctx.exception = re;
30491 			_errHandler.reportError(this, re);
30492 			_errHandler.recover(this, re);
30493 		}
30494 		finally {
30495 			exitRule();
30496 		}
30497 		return _localctx;
30498 	}
30499 
30500 	public static class ServiceObjectiveContext extends ParserRuleContext {
30501 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
30502 		public TerminalNode ELASTIC_POOL() { return getToken(SQLServerStatementParser.ELASTIC_POOL, 0); }
30503 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
30504 		public IgnoredIdentifierContext ignoredIdentifier() {
30505 			return getRuleContext(IgnoredIdentifierContext.class,0);
30506 		}
30507 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30508 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
30509 		public ServiceObjectiveContext(ParserRuleContext parent, int invokingState) {
30510 			super(parent, invokingState);
30511 		}
30512 		@Override public int getRuleIndex() { return RULE_serviceObjective; }
30513 		@Override
30514 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30515 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceObjective(this);
30516 			else return visitor.visitChildren(this);
30517 		}
30518 	}
30519 
30520 	public final ServiceObjectiveContext serviceObjective() throws RecognitionException {
30521 		ServiceObjectiveContext _localctx = new ServiceObjectiveContext(_ctx, getState());
30522 		enterRule(_localctx, 596, RULE_serviceObjective);
30523 		try {
30524 			setState(4296);
30525 			_errHandler.sync(this);
30526 			switch (_input.LA(1)) {
30527 			case STRING_:
30528 				enterOuterAlt(_localctx, 1);
30529 				{
30530 				setState(4288);
30531 				match(STRING_);
30532 				}
30533 				break;
30534 			case ELASTIC_POOL:
30535 				enterOuterAlt(_localctx, 2);
30536 				{
30537 				setState(4289);
30538 				match(ELASTIC_POOL);
30539 				setState(4290);
30540 				match(LP_);
30541 				setState(4291);
30542 				ignoredIdentifier();
30543 				setState(4292);
30544 				match(EQ_);
30545 				setState(4293);
30546 				match(STRING_);
30547 				setState(4294);
30548 				match(RP_);
30549 				}
30550 				break;
30551 			default:
30552 				throw new NoViableAltException(this);
30553 			}
30554 		}
30555 		catch (RecognitionException re) {
30556 			_localctx.exception = re;
30557 			_errHandler.reportError(this, re);
30558 			_errHandler.recover(this, re);
30559 		}
30560 		finally {
30561 			exitRule();
30562 		}
30563 		return _localctx;
30564 	}
30565 
30566 	public static class AlterDatabaseOptionSpecContext extends ParserRuleContext {
30567 		public AcceleratedDatabaseRecoveryContext acceleratedDatabaseRecovery() {
30568 			return getRuleContext(AcceleratedDatabaseRecoveryContext.class,0);
30569 		}
30570 		public AutoOptionContext autoOption() {
30571 			return getRuleContext(AutoOptionContext.class,0);
30572 		}
30573 		public AutomaticTuningOptionContext automaticTuningOption() {
30574 			return getRuleContext(AutomaticTuningOptionContext.class,0);
30575 		}
30576 		public ChangeTrackingOptionContext changeTrackingOption() {
30577 			return getRuleContext(ChangeTrackingOptionContext.class,0);
30578 		}
30579 		public TerminalNode CONTAINMENT() { return getToken(SQLServerStatementParser.CONTAINMENT, 0); }
30580 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30581 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
30582 		public TerminalNode PARTIAL() { return getToken(SQLServerStatementParser.PARTIAL, 0); }
30583 		public CursorOptionContext cursorOption() {
30584 			return getRuleContext(CursorOptionContext.class,0);
30585 		}
30586 		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(SQLServerStatementParser.DATE_CORRELATION_OPTIMIZATION, 0); }
30587 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
30588 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
30589 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
30590 		public TerminalNode SUSPEND() { return getToken(SQLServerStatementParser.SUSPEND, 0); }
30591 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
30592 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
30593 		public TerminalNode OFFLINE() { return getToken(SQLServerStatementParser.OFFLINE, 0); }
30594 		public TerminalNode EMERGENCY() { return getToken(SQLServerStatementParser.EMERGENCY, 0); }
30595 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
30596 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
30597 		public TerminalNode SINGLE_USER() { return getToken(SQLServerStatementParser.SINGLE_USER, 0); }
30598 		public TerminalNode RESTRICTED_USER() { return getToken(SQLServerStatementParser.RESTRICTED_USER, 0); }
30599 		public TerminalNode MULTI_USER() { return getToken(SQLServerStatementParser.MULTI_USER, 0); }
30600 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
30601 		public TerminalNode DISABLED() { return getToken(SQLServerStatementParser.DISABLED, 0); }
30602 		public TerminalNode ALLOWED() { return getToken(SQLServerStatementParser.ALLOWED, 0); }
30603 		public TerminalNode FORCED() { return getToken(SQLServerStatementParser.FORCED, 0); }
30604 		public ExternalAccessOptionContext externalAccessOption() {
30605 			return getRuleContext(ExternalAccessOptionContext.class,0);
30606 		}
30607 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
30608 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
30609 		public FileStreamOptionContext fileStreamOption() {
30610 			return getRuleContext(FileStreamOptionContext.class,0);
30611 		}
30612 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
30613 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
30614 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
30615 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
30616 		public TerminalNode HADR() { return getToken(SQLServerStatementParser.HADR, 0); }
30617 		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(SQLServerStatementParser.MIXED_PAGE_ALLOCATION, 0); }
30618 		public TerminalNode PARAMETERIZATION() { return getToken(SQLServerStatementParser.PARAMETERIZATION, 0); }
30619 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
30620 		public QueryStoreOptionsContext queryStoreOptions() {
30621 			return getRuleContext(QueryStoreOptionsContext.class,0);
30622 		}
30623 		public RecoveryOptionContext recoveryOption() {
30624 			return getRuleContext(RecoveryOptionContext.class,0);
30625 		}
30626 		public ServiceBrokerOptionContext serviceBrokerOption() {
30627 			return getRuleContext(ServiceBrokerOptionContext.class,0);
30628 		}
30629 		public SnapshotOptionContext snapshotOption() {
30630 			return getRuleContext(SnapshotOptionContext.class,0);
30631 		}
30632 		public SqlOptionContext sqlOption() {
30633 			return getRuleContext(SqlOptionContext.class,0);
30634 		}
30635 		public TargetRecoveryTimeOptionContext targetRecoveryTimeOption() {
30636 			return getRuleContext(TargetRecoveryTimeOptionContext.class,0);
30637 		}
30638 		public TerminationContext termination() {
30639 			return getRuleContext(TerminationContext.class,0);
30640 		}
30641 		public TerminalNode TEMPORAL_HISTORY_RETENTION() { return getToken(SQLServerStatementParser.TEMPORAL_HISTORY_RETENTION, 0); }
30642 		public TerminalNode DATA_RETENTION() { return getToken(SQLServerStatementParser.DATA_RETENTION, 0); }
30643 		public AlterDatabaseOptionSpecContext(ParserRuleContext parent, int invokingState) {
30644 			super(parent, invokingState);
30645 		}
30646 		@Override public int getRuleIndex() { return RULE_alterDatabaseOptionSpec; }
30647 		@Override
30648 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30649 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabaseOptionSpec(this);
30650 			else return visitor.visitChildren(this);
30651 		}
30652 	}
30653 
30654 	public final AlterDatabaseOptionSpecContext alterDatabaseOptionSpec() throws RecognitionException {
30655 		AlterDatabaseOptionSpecContext _localctx = new AlterDatabaseOptionSpecContext(_ctx, getState());
30656 		enterRule(_localctx, 598, RULE_alterDatabaseOptionSpec);
30657 		int _la;
30658 		try {
30659 			setState(4341);
30660 			_errHandler.sync(this);
30661 			switch (_input.LA(1)) {
30662 			case ACCELERATED_DATABASE_RECOVERY:
30663 				enterOuterAlt(_localctx, 1);
30664 				{
30665 				setState(4298);
30666 				acceleratedDatabaseRecovery();
30667 				}
30668 				break;
30669 			case AUTO_UPDATE_STATISTICS_ASYNC:
30670 			case AUTO_UPDATE_STATISTICS:
30671 			case AUTO_SHRINK:
30672 			case AUTO_CREATE_STATISTICS:
30673 			case AUTO_CLOSE:
30674 				enterOuterAlt(_localctx, 2);
30675 				{
30676 				setState(4299);
30677 				autoOption();
30678 				}
30679 				break;
30680 			case AUTOMATIC_TUNING:
30681 				enterOuterAlt(_localctx, 3);
30682 				{
30683 				setState(4300);
30684 				automaticTuningOption();
30685 				}
30686 				break;
30687 			case CHANGE_TRACKING:
30688 				enterOuterAlt(_localctx, 4);
30689 				{
30690 				setState(4301);
30691 				changeTrackingOption();
30692 				}
30693 				break;
30694 			case CONTAINMENT:
30695 				enterOuterAlt(_localctx, 5);
30696 				{
30697 				setState(4302);
30698 				match(CONTAINMENT);
30699 				setState(4303);
30700 				match(EQ_);
30701 				setState(4304);
30702 				_la = _input.LA(1);
30703 				if ( !(_la==NONE || _la==PARTIAL) ) {
30704 				_errHandler.recoverInline(this);
30705 				}
30706 				else {
30707 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30708 					_errHandler.reportMatch(this);
30709 					consume();
30710 				}
30711 				}
30712 				break;
30713 			case CURSOR_DEFAULT:
30714 			case CURSOR_CLOSE_ON_COMMIT:
30715 				enterOuterAlt(_localctx, 6);
30716 				{
30717 				setState(4305);
30718 				cursorOption();
30719 				}
30720 				break;
30721 			case DATE_CORRELATION_OPTIMIZATION:
30722 				enterOuterAlt(_localctx, 7);
30723 				{
30724 				setState(4306);
30725 				match(DATE_CORRELATION_OPTIMIZATION);
30726 				setState(4307);
30727 				_la = _input.LA(1);
30728 				if ( !(_la==ON || _la==OFF) ) {
30729 				_errHandler.recoverInline(this);
30730 				}
30731 				else {
30732 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30733 					_errHandler.reportMatch(this);
30734 					consume();
30735 				}
30736 				}
30737 				break;
30738 			case ENCRYPTION:
30739 				enterOuterAlt(_localctx, 8);
30740 				{
30741 				setState(4308);
30742 				match(ENCRYPTION);
30743 				setState(4309);
30744 				_la = _input.LA(1);
30745 				if ( !(_la==ON || _la==OFF || _la==RESUME || _la==SUSPEND) ) {
30746 				_errHandler.recoverInline(this);
30747 				}
30748 				else {
30749 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30750 					_errHandler.reportMatch(this);
30751 					consume();
30752 				}
30753 				}
30754 				break;
30755 			case ONLINE:
30756 			case OFFLINE:
30757 			case EMERGENCY:
30758 				enterOuterAlt(_localctx, 9);
30759 				{
30760 				setState(4310);
30761 				_la = _input.LA(1);
30762 				if ( !(_la==ONLINE || _la==OFFLINE || _la==EMERGENCY) ) {
30763 				_errHandler.recoverInline(this);
30764 				}
30765 				else {
30766 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30767 					_errHandler.reportMatch(this);
30768 					consume();
30769 				}
30770 				}
30771 				break;
30772 			case READ_ONLY:
30773 			case READ_WRITE:
30774 				enterOuterAlt(_localctx, 10);
30775 				{
30776 				setState(4311);
30777 				_la = _input.LA(1);
30778 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
30779 				_errHandler.recoverInline(this);
30780 				}
30781 				else {
30782 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30783 					_errHandler.reportMatch(this);
30784 					consume();
30785 				}
30786 				}
30787 				break;
30788 			case MULTI_USER:
30789 			case RESTRICTED_USER:
30790 			case SINGLE_USER:
30791 				enterOuterAlt(_localctx, 11);
30792 				{
30793 				setState(4312);
30794 				_la = _input.LA(1);
30795 				if ( !(((((_la - 612)) & ~0x3f) == 0 && ((1L << (_la - 612)) & ((1L << (MULTI_USER - 612)) | (1L << (RESTRICTED_USER - 612)) | (1L << (SINGLE_USER - 612)))) != 0)) ) {
30796 				_errHandler.recoverInline(this);
30797 				}
30798 				else {
30799 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30800 					_errHandler.reportMatch(this);
30801 					consume();
30802 				}
30803 				}
30804 				break;
30805 			case DELAYED_DURABILITY:
30806 				enterOuterAlt(_localctx, 12);
30807 				{
30808 				setState(4313);
30809 				match(DELAYED_DURABILITY);
30810 				setState(4314);
30811 				match(EQ_);
30812 				setState(4315);
30813 				_la = _input.LA(1);
30814 				if ( !(_la==FORCED || _la==DISABLED || _la==ALLOWED) ) {
30815 				_errHandler.recoverInline(this);
30816 				}
30817 				else {
30818 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30819 					_errHandler.reportMatch(this);
30820 					consume();
30821 				}
30822 				}
30823 				break;
30824 			case DB_CHAINING:
30825 			case TRUSTWORTHY:
30826 			case DEFAULT_FULLTEXT_LANGUAGE:
30827 			case DEFAULT_LANGUAGE:
30828 			case NESTED_TRIGGERS:
30829 			case TRANSFORM_NOISE_WORDS:
30830 			case TWO_DIGIT_YEAR_CUTOFF:
30831 				enterOuterAlt(_localctx, 13);
30832 				{
30833 				setState(4316);
30834 				externalAccessOption();
30835 				}
30836 				break;
30837 			case FILESTREAM:
30838 				enterOuterAlt(_localctx, 14);
30839 				{
30840 				setState(4317);
30841 				match(FILESTREAM);
30842 				setState(4318);
30843 				match(LP_);
30844 				setState(4319);
30845 				fileStreamOption();
30846 				setState(4320);
30847 				match(RP_);
30848 				}
30849 				break;
30850 			case ALTER:
30851 				enterOuterAlt(_localctx, 15);
30852 				{
30853 				setState(4322);
30854 				match(ALTER);
30855 				setState(4323);
30856 				match(DATABASE);
30857 				setState(4324);
30858 				match(SET);
30859 				setState(4325);
30860 				match(HADR);
30861 				}
30862 				break;
30863 			case MIXED_PAGE_ALLOCATION:
30864 				enterOuterAlt(_localctx, 16);
30865 				{
30866 				setState(4326);
30867 				match(MIXED_PAGE_ALLOCATION);
30868 				setState(4327);
30869 				_la = _input.LA(1);
30870 				if ( !(_la==ON || _la==OFF) ) {
30871 				_errHandler.recoverInline(this);
30872 				}
30873 				else {
30874 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30875 					_errHandler.reportMatch(this);
30876 					consume();
30877 				}
30878 				}
30879 				break;
30880 			case PARAMETERIZATION:
30881 				enterOuterAlt(_localctx, 17);
30882 				{
30883 				setState(4328);
30884 				match(PARAMETERIZATION);
30885 				setState(4329);
30886 				_la = _input.LA(1);
30887 				if ( !(_la==SIMPLE || _la==FORCED) ) {
30888 				_errHandler.recoverInline(this);
30889 				}
30890 				else {
30891 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30892 					_errHandler.reportMatch(this);
30893 					consume();
30894 				}
30895 				}
30896 				break;
30897 			case QUERY_STORE:
30898 				enterOuterAlt(_localctx, 18);
30899 				{
30900 				setState(4330);
30901 				queryStoreOptions();
30902 				}
30903 				break;
30904 			case PAGE_VERIFY:
30905 			case TORN_PAGE_DETECTION:
30906 			case RECOVERY:
30907 				enterOuterAlt(_localctx, 19);
30908 				{
30909 				setState(4331);
30910 				recoveryOption();
30911 				}
30912 				break;
30913 			case HONOR_BROKER_PRIORITY:
30914 			case ERROR_BROKER_CONVERSATIONS:
30915 			case NEW_BROKER:
30916 			case DISABLE_BROKER:
30917 			case ENABLE_BROKER:
30918 				enterOuterAlt(_localctx, 20);
30919 				{
30920 				setState(4332);
30921 				serviceBrokerOption();
30922 				}
30923 				break;
30924 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
30925 			case READ_COMMITTED_SNAPSHOT:
30926 			case ALLOW_SNAPSHOT_ISOLATION:
30927 				enterOuterAlt(_localctx, 21);
30928 				{
30929 				setState(4333);
30930 				snapshotOption();
30931 				}
30932 				break;
30933 			case RECURSIVE_TRIGGERS:
30934 			case QUOTED_IDENTIFIER:
30935 			case NUMERIC_ROUNDABORT:
30936 			case CONCAT_NULL_YIELDS_NULL:
30937 			case COMPATIBILITY_LEVEL:
30938 			case ARITHABORT:
30939 			case ANSI_WARNINGS:
30940 			case ANSI_PADDING:
30941 			case ANSI_NULLS:
30942 			case ANSI_NULL_DEFAULT:
30943 				enterOuterAlt(_localctx, 22);
30944 				{
30945 				setState(4334);
30946 				sqlOption();
30947 				}
30948 				break;
30949 			case TARGET_RECOVERY_TIME:
30950 				enterOuterAlt(_localctx, 23);
30951 				{
30952 				setState(4335);
30953 				targetRecoveryTimeOption();
30954 				}
30955 				break;
30956 			case ROLLBACK:
30957 			case NO_WAIT:
30958 				enterOuterAlt(_localctx, 24);
30959 				{
30960 				setState(4336);
30961 				termination();
30962 				}
30963 				break;
30964 			case TEMPORAL_HISTORY_RETENTION:
30965 				enterOuterAlt(_localctx, 25);
30966 				{
30967 				setState(4337);
30968 				match(TEMPORAL_HISTORY_RETENTION);
30969 				setState(4338);
30970 				_la = _input.LA(1);
30971 				if ( !(_la==ON || _la==OFF) ) {
30972 				_errHandler.recoverInline(this);
30973 				}
30974 				else {
30975 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30976 					_errHandler.reportMatch(this);
30977 					consume();
30978 				}
30979 				}
30980 				break;
30981 			case DATA_RETENTION:
30982 				enterOuterAlt(_localctx, 26);
30983 				{
30984 				setState(4339);
30985 				match(DATA_RETENTION);
30986 				setState(4340);
30987 				_la = _input.LA(1);
30988 				if ( !(_la==ON || _la==OFF) ) {
30989 				_errHandler.recoverInline(this);
30990 				}
30991 				else {
30992 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
30993 					_errHandler.reportMatch(this);
30994 					consume();
30995 				}
30996 				}
30997 				break;
30998 			default:
30999 				throw new NoViableAltException(this);
31000 			}
31001 		}
31002 		catch (RecognitionException re) {
31003 			_localctx.exception = re;
31004 			_errHandler.reportError(this, re);
31005 			_errHandler.recover(this, re);
31006 		}
31007 		finally {
31008 			exitRule();
31009 		}
31010 		return _localctx;
31011 	}
31012 
31013 	public static class FileAndFilegroupOptionsContext extends ParserRuleContext {
31014 		public AddOrModifyFilesContext addOrModifyFiles() {
31015 			return getRuleContext(AddOrModifyFilesContext.class,0);
31016 		}
31017 		public FileSpecContext fileSpec() {
31018 			return getRuleContext(FileSpecContext.class,0);
31019 		}
31020 		public AddOrModifyFilegroupsContext addOrModifyFilegroups() {
31021 			return getRuleContext(AddOrModifyFilegroupsContext.class,0);
31022 		}
31023 		public FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() {
31024 			return getRuleContext(FilegroupUpdatabilityOptionContext.class,0);
31025 		}
31026 		public FileAndFilegroupOptionsContext(ParserRuleContext parent, int invokingState) {
31027 			super(parent, invokingState);
31028 		}
31029 		@Override public int getRuleIndex() { return RULE_fileAndFilegroupOptions; }
31030 		@Override
31031 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31032 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileAndFilegroupOptions(this);
31033 			else return visitor.visitChildren(this);
31034 		}
31035 	}
31036 
31037 	public final FileAndFilegroupOptionsContext fileAndFilegroupOptions() throws RecognitionException {
31038 		FileAndFilegroupOptionsContext _localctx = new FileAndFilegroupOptionsContext(_ctx, getState());
31039 		enterRule(_localctx, 600, RULE_fileAndFilegroupOptions);
31040 		try {
31041 			setState(4347);
31042 			_errHandler.sync(this);
31043 			switch ( getInterpreter().adaptivePredict(_input,462,_ctx) ) {
31044 			case 1:
31045 				enterOuterAlt(_localctx, 1);
31046 				{
31047 				setState(4343);
31048 				addOrModifyFiles();
31049 				}
31050 				break;
31051 			case 2:
31052 				enterOuterAlt(_localctx, 2);
31053 				{
31054 				setState(4344);
31055 				fileSpec();
31056 				}
31057 				break;
31058 			case 3:
31059 				enterOuterAlt(_localctx, 3);
31060 				{
31061 				setState(4345);
31062 				addOrModifyFilegroups();
31063 				}
31064 				break;
31065 			case 4:
31066 				enterOuterAlt(_localctx, 4);
31067 				{
31068 				setState(4346);
31069 				filegroupUpdatabilityOption();
31070 				}
31071 				break;
31072 			}
31073 		}
31074 		catch (RecognitionException re) {
31075 			_localctx.exception = re;
31076 			_errHandler.reportError(this, re);
31077 			_errHandler.recover(this, re);
31078 		}
31079 		finally {
31080 			exitRule();
31081 		}
31082 		return _localctx;
31083 	}
31084 
31085 	public static class AddOrModifyFilegroupsContext extends ParserRuleContext {
31086 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
31087 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
31088 		public IgnoredIdentifierContext ignoredIdentifier() {
31089 			return getRuleContext(IgnoredIdentifierContext.class,0);
31090 		}
31091 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
31092 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
31093 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
31094 		public TerminalNode REMOVE() { return getToken(SQLServerStatementParser.REMOVE, 0); }
31095 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
31096 		public FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() {
31097 			return getRuleContext(FilegroupUpdatabilityOptionContext.class,0);
31098 		}
31099 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
31100 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
31101 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31102 		public TerminalNode AUTOGROW_SINGLE_FILE() { return getToken(SQLServerStatementParser.AUTOGROW_SINGLE_FILE, 0); }
31103 		public TerminalNode AUTOGROW_ALL_FILES() { return getToken(SQLServerStatementParser.AUTOGROW_ALL_FILES, 0); }
31104 		public AddOrModifyFilegroupsContext(ParserRuleContext parent, int invokingState) {
31105 			super(parent, invokingState);
31106 		}
31107 		@Override public int getRuleIndex() { return RULE_addOrModifyFilegroups; }
31108 		@Override
31109 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31110 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddOrModifyFilegroups(this);
31111 			else return visitor.visitChildren(this);
31112 		}
31113 	}
31114 
31115 	public final AddOrModifyFilegroupsContext addOrModifyFilegroups() throws RecognitionException {
31116 		AddOrModifyFilegroupsContext _localctx = new AddOrModifyFilegroupsContext(_ctx, getState());
31117 		enterRule(_localctx, 602, RULE_addOrModifyFilegroups);
31118 		int _la;
31119 		try {
31120 			setState(4371);
31121 			_errHandler.sync(this);
31122 			switch (_input.LA(1)) {
31123 			case ADD:
31124 				enterOuterAlt(_localctx, 1);
31125 				{
31126 				setState(4349);
31127 				match(ADD);
31128 				setState(4350);
31129 				match(FILEGROUP);
31130 				setState(4351);
31131 				ignoredIdentifier();
31132 				setState(4356);
31133 				_errHandler.sync(this);
31134 				switch ( getInterpreter().adaptivePredict(_input,463,_ctx) ) {
31135 				case 1:
31136 					{
31137 					setState(4352);
31138 					match(CONTAINS);
31139 					setState(4353);
31140 					match(FILESTREAM);
31141 					}
31142 					break;
31143 				case 2:
31144 					{
31145 					setState(4354);
31146 					match(CONTAINS);
31147 					setState(4355);
31148 					match(MEMORY_OPTIMIZED_DATA);
31149 					}
31150 					break;
31151 				}
31152 				}
31153 				break;
31154 			case REMOVE:
31155 				enterOuterAlt(_localctx, 2);
31156 				{
31157 				setState(4358);
31158 				match(REMOVE);
31159 				setState(4359);
31160 				match(FILEGROUP);
31161 				setState(4360);
31162 				ignoredIdentifier();
31163 				}
31164 				break;
31165 			case MODIFY:
31166 				enterOuterAlt(_localctx, 3);
31167 				{
31168 				setState(4361);
31169 				match(MODIFY);
31170 				setState(4362);
31171 				match(FILEGROUP);
31172 				setState(4363);
31173 				ignoredIdentifier();
31174 				setState(4364);
31175 				filegroupUpdatabilityOption();
31176 				}
31177 				break;
31178 			case DEFAULT:
31179 				enterOuterAlt(_localctx, 4);
31180 				{
31181 				setState(4366);
31182 				match(DEFAULT);
31183 				}
31184 				break;
31185 			case NAME:
31186 				enterOuterAlt(_localctx, 5);
31187 				{
31188 				setState(4367);
31189 				match(NAME);
31190 				setState(4368);
31191 				match(EQ_);
31192 				setState(4369);
31193 				ignoredIdentifier();
31194 				}
31195 				break;
31196 			case AUTOGROW_SINGLE_FILE:
31197 			case AUTOGROW_ALL_FILES:
31198 				enterOuterAlt(_localctx, 6);
31199 				{
31200 				setState(4370);
31201 				_la = _input.LA(1);
31202 				if ( !(_la==AUTOGROW_SINGLE_FILE || _la==AUTOGROW_ALL_FILES) ) {
31203 				_errHandler.recoverInline(this);
31204 				}
31205 				else {
31206 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31207 					_errHandler.reportMatch(this);
31208 					consume();
31209 				}
31210 				}
31211 				break;
31212 			default:
31213 				throw new NoViableAltException(this);
31214 			}
31215 		}
31216 		catch (RecognitionException re) {
31217 			_localctx.exception = re;
31218 			_errHandler.reportError(this, re);
31219 			_errHandler.recover(this, re);
31220 		}
31221 		finally {
31222 			exitRule();
31223 		}
31224 		return _localctx;
31225 	}
31226 
31227 	public static class FilegroupUpdatabilityOptionContext extends ParserRuleContext {
31228 		public TerminalNode READONLY() { return getToken(SQLServerStatementParser.READONLY, 0); }
31229 		public TerminalNode READWRITE() { return getToken(SQLServerStatementParser.READWRITE, 0); }
31230 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
31231 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
31232 		public FilegroupUpdatabilityOptionContext(ParserRuleContext parent, int invokingState) {
31233 			super(parent, invokingState);
31234 		}
31235 		@Override public int getRuleIndex() { return RULE_filegroupUpdatabilityOption; }
31236 		@Override
31237 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31238 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFilegroupUpdatabilityOption(this);
31239 			else return visitor.visitChildren(this);
31240 		}
31241 	}
31242 
31243 	public final FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() throws RecognitionException {
31244 		FilegroupUpdatabilityOptionContext _localctx = new FilegroupUpdatabilityOptionContext(_ctx, getState());
31245 		enterRule(_localctx, 604, RULE_filegroupUpdatabilityOption);
31246 		int _la;
31247 		try {
31248 			setState(4375);
31249 			_errHandler.sync(this);
31250 			switch (_input.LA(1)) {
31251 			case READONLY:
31252 			case READWRITE:
31253 				enterOuterAlt(_localctx, 1);
31254 				{
31255 				setState(4373);
31256 				_la = _input.LA(1);
31257 				if ( !(_la==READONLY || _la==READWRITE) ) {
31258 				_errHandler.recoverInline(this);
31259 				}
31260 				else {
31261 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31262 					_errHandler.reportMatch(this);
31263 					consume();
31264 				}
31265 				}
31266 				break;
31267 			case READ_ONLY:
31268 			case READ_WRITE:
31269 				enterOuterAlt(_localctx, 2);
31270 				{
31271 				setState(4374);
31272 				_la = _input.LA(1);
31273 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
31274 				_errHandler.recoverInline(this);
31275 				}
31276 				else {
31277 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31278 					_errHandler.reportMatch(this);
31279 					consume();
31280 				}
31281 				}
31282 				break;
31283 			default:
31284 				throw new NoViableAltException(this);
31285 			}
31286 		}
31287 		catch (RecognitionException re) {
31288 			_localctx.exception = re;
31289 			_errHandler.reportError(this, re);
31290 			_errHandler.recover(this, re);
31291 		}
31292 		finally {
31293 			exitRule();
31294 		}
31295 		return _localctx;
31296 	}
31297 
31298 	public static class AddOrModifyFilesContext extends ParserRuleContext {
31299 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
31300 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
31301 		public List<FileSpecContext> fileSpec() {
31302 			return getRuleContexts(FileSpecContext.class);
31303 		}
31304 		public FileSpecContext fileSpec(int i) {
31305 			return getRuleContext(FileSpecContext.class,i);
31306 		}
31307 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
31308 		public TerminalNode COMMA_(int i) {
31309 			return getToken(SQLServerStatementParser.COMMA_, i);
31310 		}
31311 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
31312 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
31313 		public IgnoredIdentifierContext ignoredIdentifier() {
31314 			return getRuleContext(IgnoredIdentifierContext.class,0);
31315 		}
31316 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
31317 		public TerminalNode REMOVE() { return getToken(SQLServerStatementParser.REMOVE, 0); }
31318 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
31319 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
31320 		public AddOrModifyFilesContext(ParserRuleContext parent, int invokingState) {
31321 			super(parent, invokingState);
31322 		}
31323 		@Override public int getRuleIndex() { return RULE_addOrModifyFiles; }
31324 		@Override
31325 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31326 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddOrModifyFiles(this);
31327 			else return visitor.visitChildren(this);
31328 		}
31329 	}
31330 
31331 	public final AddOrModifyFilesContext addOrModifyFiles() throws RecognitionException {
31332 		AddOrModifyFilesContext _localctx = new AddOrModifyFilesContext(_ctx, getState());
31333 		enterRule(_localctx, 606, RULE_addOrModifyFiles);
31334 		int _la;
31335 		try {
31336 			setState(4409);
31337 			_errHandler.sync(this);
31338 			switch ( getInterpreter().adaptivePredict(_input,469,_ctx) ) {
31339 			case 1:
31340 				enterOuterAlt(_localctx, 1);
31341 				{
31342 				setState(4377);
31343 				match(ADD);
31344 				setState(4378);
31345 				match(FILE);
31346 				setState(4379);
31347 				fileSpec();
31348 				setState(4384);
31349 				_errHandler.sync(this);
31350 				_la = _input.LA(1);
31351 				while (_la==COMMA_) {
31352 					{
31353 					{
31354 					setState(4380);
31355 					match(COMMA_);
31356 					setState(4381);
31357 					fileSpec();
31358 					}
31359 					}
31360 					setState(4386);
31361 					_errHandler.sync(this);
31362 					_la = _input.LA(1);
31363 				}
31364 				setState(4390);
31365 				_errHandler.sync(this);
31366 				_la = _input.LA(1);
31367 				if (_la==TO) {
31368 					{
31369 					setState(4387);
31370 					match(TO);
31371 					setState(4388);
31372 					match(FILEGROUP);
31373 					setState(4389);
31374 					ignoredIdentifier();
31375 					}
31376 				}
31377 
31378 				}
31379 				break;
31380 			case 2:
31381 				enterOuterAlt(_localctx, 2);
31382 				{
31383 				setState(4392);
31384 				match(ADD);
31385 				setState(4393);
31386 				match(LOG);
31387 				setState(4394);
31388 				match(FILE);
31389 				setState(4395);
31390 				fileSpec();
31391 				setState(4400);
31392 				_errHandler.sync(this);
31393 				_la = _input.LA(1);
31394 				while (_la==COMMA_) {
31395 					{
31396 					{
31397 					setState(4396);
31398 					match(COMMA_);
31399 					setState(4397);
31400 					fileSpec();
31401 					}
31402 					}
31403 					setState(4402);
31404 					_errHandler.sync(this);
31405 					_la = _input.LA(1);
31406 				}
31407 				}
31408 				break;
31409 			case 3:
31410 				enterOuterAlt(_localctx, 3);
31411 				{
31412 				setState(4403);
31413 				match(REMOVE);
31414 				setState(4404);
31415 				match(FILE);
31416 				setState(4405);
31417 				match(STRING_);
31418 				}
31419 				break;
31420 			case 4:
31421 				enterOuterAlt(_localctx, 4);
31422 				{
31423 				setState(4406);
31424 				match(MODIFY);
31425 				setState(4407);
31426 				match(FILE);
31427 				setState(4408);
31428 				fileSpec();
31429 				}
31430 				break;
31431 			}
31432 		}
31433 		catch (RecognitionException re) {
31434 			_localctx.exception = re;
31435 			_errHandler.reportError(this, re);
31436 			_errHandler.recover(this, re);
31437 		}
31438 		finally {
31439 			exitRule();
31440 		}
31441 		return _localctx;
31442 	}
31443 
31444 	public static class AcceleratedDatabaseRecoveryContext extends ParserRuleContext {
31445 		public TerminalNode ACCELERATED_DATABASE_RECOVERY() { return getToken(SQLServerStatementParser.ACCELERATED_DATABASE_RECOVERY, 0); }
31446 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
31447 		public TerminalNode EQ_(int i) {
31448 			return getToken(SQLServerStatementParser.EQ_, i);
31449 		}
31450 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31451 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31452 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31453 		public TerminalNode PERSISTENT_VERSION_STORE_FILEGROUP() { return getToken(SQLServerStatementParser.PERSISTENT_VERSION_STORE_FILEGROUP, 0); }
31454 		public IgnoredIdentifierContext ignoredIdentifier() {
31455 			return getRuleContext(IgnoredIdentifierContext.class,0);
31456 		}
31457 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
31458 		public AcceleratedDatabaseRecoveryContext(ParserRuleContext parent, int invokingState) {
31459 			super(parent, invokingState);
31460 		}
31461 		@Override public int getRuleIndex() { return RULE_acceleratedDatabaseRecovery; }
31462 		@Override
31463 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31464 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAcceleratedDatabaseRecovery(this);
31465 			else return visitor.visitChildren(this);
31466 		}
31467 	}
31468 
31469 	public final AcceleratedDatabaseRecoveryContext acceleratedDatabaseRecovery() throws RecognitionException {
31470 		AcceleratedDatabaseRecoveryContext _localctx = new AcceleratedDatabaseRecoveryContext(_ctx, getState());
31471 		enterRule(_localctx, 608, RULE_acceleratedDatabaseRecovery);
31472 		int _la;
31473 		try {
31474 			enterOuterAlt(_localctx, 1);
31475 			{
31476 			setState(4411);
31477 			match(ACCELERATED_DATABASE_RECOVERY);
31478 			setState(4412);
31479 			match(EQ_);
31480 			setState(4413);
31481 			_la = _input.LA(1);
31482 			if ( !(_la==ON || _la==OFF) ) {
31483 			_errHandler.recoverInline(this);
31484 			}
31485 			else {
31486 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31487 				_errHandler.reportMatch(this);
31488 				consume();
31489 			}
31490 			setState(4420);
31491 			_errHandler.sync(this);
31492 			switch ( getInterpreter().adaptivePredict(_input,470,_ctx) ) {
31493 			case 1:
31494 				{
31495 				setState(4414);
31496 				match(LP_);
31497 				setState(4415);
31498 				match(PERSISTENT_VERSION_STORE_FILEGROUP);
31499 				setState(4416);
31500 				match(EQ_);
31501 				setState(4417);
31502 				ignoredIdentifier();
31503 				setState(4418);
31504 				match(RP_);
31505 				}
31506 				break;
31507 			}
31508 			}
31509 		}
31510 		catch (RecognitionException re) {
31511 			_localctx.exception = re;
31512 			_errHandler.reportError(this, re);
31513 			_errHandler.recover(this, re);
31514 		}
31515 		finally {
31516 			exitRule();
31517 		}
31518 		return _localctx;
31519 	}
31520 
31521 	public static class AutoOptionContext extends ParserRuleContext {
31522 		public TerminalNode AUTO_CLOSE() { return getToken(SQLServerStatementParser.AUTO_CLOSE, 0); }
31523 		public List<TerminalNode> ON() { return getTokens(SQLServerStatementParser.ON); }
31524 		public TerminalNode ON(int i) {
31525 			return getToken(SQLServerStatementParser.ON, i);
31526 		}
31527 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31528 		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_CREATE_STATISTICS, 0); }
31529 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31530 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
31531 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31532 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
31533 		public TerminalNode AUTO_SHRINK() { return getToken(SQLServerStatementParser.AUTO_SHRINK, 0); }
31534 		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS, 0); }
31535 		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
31536 		public AutoOptionContext(ParserRuleContext parent, int invokingState) {
31537 			super(parent, invokingState);
31538 		}
31539 		@Override public int getRuleIndex() { return RULE_autoOption; }
31540 		@Override
31541 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31542 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAutoOption(this);
31543 			else return visitor.visitChildren(this);
31544 		}
31545 	}
31546 
31547 	public final AutoOptionContext autoOption() throws RecognitionException {
31548 		AutoOptionContext _localctx = new AutoOptionContext(_ctx, getState());
31549 		enterRule(_localctx, 610, RULE_autoOption);
31550 		int _la;
31551 		try {
31552 			setState(4442);
31553 			_errHandler.sync(this);
31554 			switch (_input.LA(1)) {
31555 			case AUTO_CLOSE:
31556 				enterOuterAlt(_localctx, 1);
31557 				{
31558 				setState(4422);
31559 				match(AUTO_CLOSE);
31560 				setState(4423);
31561 				_la = _input.LA(1);
31562 				if ( !(_la==ON || _la==OFF) ) {
31563 				_errHandler.recoverInline(this);
31564 				}
31565 				else {
31566 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31567 					_errHandler.reportMatch(this);
31568 					consume();
31569 				}
31570 				}
31571 				break;
31572 			case AUTO_CREATE_STATISTICS:
31573 				enterOuterAlt(_localctx, 2);
31574 				{
31575 				setState(4424);
31576 				match(AUTO_CREATE_STATISTICS);
31577 				setState(4434);
31578 				_errHandler.sync(this);
31579 				switch (_input.LA(1)) {
31580 				case OFF:
31581 					{
31582 					setState(4425);
31583 					match(OFF);
31584 					}
31585 					break;
31586 				case ON:
31587 					{
31588 					setState(4426);
31589 					match(ON);
31590 					setState(4432);
31591 					_errHandler.sync(this);
31592 					switch ( getInterpreter().adaptivePredict(_input,471,_ctx) ) {
31593 					case 1:
31594 						{
31595 						setState(4427);
31596 						match(LP_);
31597 						setState(4428);
31598 						match(INCREMENTAL);
31599 						setState(4429);
31600 						match(EQ_);
31601 						setState(4430);
31602 						_la = _input.LA(1);
31603 						if ( !(_la==ON || _la==OFF) ) {
31604 						_errHandler.recoverInline(this);
31605 						}
31606 						else {
31607 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31608 							_errHandler.reportMatch(this);
31609 							consume();
31610 						}
31611 						setState(4431);
31612 						match(RP_);
31613 						}
31614 						break;
31615 					}
31616 					}
31617 					break;
31618 				default:
31619 					throw new NoViableAltException(this);
31620 				}
31621 				}
31622 				break;
31623 			case AUTO_SHRINK:
31624 				enterOuterAlt(_localctx, 3);
31625 				{
31626 				setState(4436);
31627 				match(AUTO_SHRINK);
31628 				setState(4437);
31629 				_la = _input.LA(1);
31630 				if ( !(_la==ON || _la==OFF) ) {
31631 				_errHandler.recoverInline(this);
31632 				}
31633 				else {
31634 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31635 					_errHandler.reportMatch(this);
31636 					consume();
31637 				}
31638 				}
31639 				break;
31640 			case AUTO_UPDATE_STATISTICS:
31641 				enterOuterAlt(_localctx, 4);
31642 				{
31643 				setState(4438);
31644 				match(AUTO_UPDATE_STATISTICS);
31645 				setState(4439);
31646 				_la = _input.LA(1);
31647 				if ( !(_la==ON || _la==OFF) ) {
31648 				_errHandler.recoverInline(this);
31649 				}
31650 				else {
31651 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31652 					_errHandler.reportMatch(this);
31653 					consume();
31654 				}
31655 				}
31656 				break;
31657 			case AUTO_UPDATE_STATISTICS_ASYNC:
31658 				enterOuterAlt(_localctx, 5);
31659 				{
31660 				setState(4440);
31661 				match(AUTO_UPDATE_STATISTICS_ASYNC);
31662 				setState(4441);
31663 				_la = _input.LA(1);
31664 				if ( !(_la==ON || _la==OFF) ) {
31665 				_errHandler.recoverInline(this);
31666 				}
31667 				else {
31668 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31669 					_errHandler.reportMatch(this);
31670 					consume();
31671 				}
31672 				}
31673 				break;
31674 			default:
31675 				throw new NoViableAltException(this);
31676 			}
31677 		}
31678 		catch (RecognitionException re) {
31679 			_localctx.exception = re;
31680 			_errHandler.reportError(this, re);
31681 			_errHandler.recover(this, re);
31682 		}
31683 		finally {
31684 			exitRule();
31685 		}
31686 		return _localctx;
31687 	}
31688 
31689 	public static class AutomaticTuningOptionContext extends ParserRuleContext {
31690 		public TerminalNode AUTOMATIC_TUNING() { return getToken(SQLServerStatementParser.AUTOMATIC_TUNING, 0); }
31691 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31692 		public TerminalNode FORCE_LAST_GOOD_PLAN() { return getToken(SQLServerStatementParser.FORCE_LAST_GOOD_PLAN, 0); }
31693 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31694 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
31695 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31696 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31697 		public AutomaticTuningOptionContext(ParserRuleContext parent, int invokingState) {
31698 			super(parent, invokingState);
31699 		}
31700 		@Override public int getRuleIndex() { return RULE_automaticTuningOption; }
31701 		@Override
31702 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31703 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAutomaticTuningOption(this);
31704 			else return visitor.visitChildren(this);
31705 		}
31706 	}
31707 
31708 	public final AutomaticTuningOptionContext automaticTuningOption() throws RecognitionException {
31709 		AutomaticTuningOptionContext _localctx = new AutomaticTuningOptionContext(_ctx, getState());
31710 		enterRule(_localctx, 612, RULE_automaticTuningOption);
31711 		int _la;
31712 		try {
31713 			enterOuterAlt(_localctx, 1);
31714 			{
31715 			setState(4444);
31716 			match(AUTOMATIC_TUNING);
31717 			setState(4445);
31718 			match(LP_);
31719 			setState(4446);
31720 			match(FORCE_LAST_GOOD_PLAN);
31721 			setState(4447);
31722 			match(EQ_);
31723 			setState(4448);
31724 			_la = _input.LA(1);
31725 			if ( !(_la==ON || _la==OFF) ) {
31726 			_errHandler.recoverInline(this);
31727 			}
31728 			else {
31729 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31730 				_errHandler.reportMatch(this);
31731 				consume();
31732 			}
31733 			setState(4449);
31734 			match(RP_);
31735 			}
31736 		}
31737 		catch (RecognitionException re) {
31738 			_localctx.exception = re;
31739 			_errHandler.reportError(this, re);
31740 			_errHandler.recover(this, re);
31741 		}
31742 		finally {
31743 			exitRule();
31744 		}
31745 		return _localctx;
31746 	}
31747 
31748 	public static class ChangeTrackingOptionContext extends ParserRuleContext {
31749 		public TerminalNode CHANGE_TRACKING() { return getToken(SQLServerStatementParser.CHANGE_TRACKING, 0); }
31750 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31751 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31752 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31753 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31754 		public List<ChangeTrackingOptionListContext> changeTrackingOptionList() {
31755 			return getRuleContexts(ChangeTrackingOptionListContext.class);
31756 		}
31757 		public ChangeTrackingOptionListContext changeTrackingOptionList(int i) {
31758 			return getRuleContext(ChangeTrackingOptionListContext.class,i);
31759 		}
31760 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
31761 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
31762 		public TerminalNode COMMA_(int i) {
31763 			return getToken(SQLServerStatementParser.COMMA_, i);
31764 		}
31765 		public ChangeTrackingOptionContext(ParserRuleContext parent, int invokingState) {
31766 			super(parent, invokingState);
31767 		}
31768 		@Override public int getRuleIndex() { return RULE_changeTrackingOption; }
31769 		@Override
31770 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31771 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitChangeTrackingOption(this);
31772 			else return visitor.visitChildren(this);
31773 		}
31774 	}
31775 
31776 	public final ChangeTrackingOptionContext changeTrackingOption() throws RecognitionException {
31777 		ChangeTrackingOptionContext _localctx = new ChangeTrackingOptionContext(_ctx, getState());
31778 		enterRule(_localctx, 614, RULE_changeTrackingOption);
31779 		int _la;
31780 		try {
31781 			enterOuterAlt(_localctx, 1);
31782 			{
31783 			setState(4451);
31784 			match(CHANGE_TRACKING);
31785 			setState(4471);
31786 			_errHandler.sync(this);
31787 			switch ( getInterpreter().adaptivePredict(_input,477,_ctx) ) {
31788 			case 1:
31789 				{
31790 				setState(4452);
31791 				match(EQ_);
31792 				setState(4453);
31793 				match(OFF);
31794 				}
31795 				break;
31796 			case 2:
31797 				{
31798 				setState(4456);
31799 				_errHandler.sync(this);
31800 				_la = _input.LA(1);
31801 				if (_la==EQ_) {
31802 					{
31803 					setState(4454);
31804 					match(EQ_);
31805 					setState(4455);
31806 					match(ON);
31807 					}
31808 				}
31809 
31810 				setState(4469);
31811 				_errHandler.sync(this);
31812 				switch ( getInterpreter().adaptivePredict(_input,476,_ctx) ) {
31813 				case 1:
31814 					{
31815 					setState(4458);
31816 					match(LP_);
31817 					setState(4459);
31818 					changeTrackingOptionList();
31819 					setState(4464);
31820 					_errHandler.sync(this);
31821 					_la = _input.LA(1);
31822 					while (_la==COMMA_) {
31823 						{
31824 						{
31825 						setState(4460);
31826 						match(COMMA_);
31827 						setState(4461);
31828 						changeTrackingOptionList();
31829 						}
31830 						}
31831 						setState(4466);
31832 						_errHandler.sync(this);
31833 						_la = _input.LA(1);
31834 					}
31835 					setState(4467);
31836 					match(RP_);
31837 					}
31838 					break;
31839 				}
31840 				}
31841 				break;
31842 			}
31843 			}
31844 		}
31845 		catch (RecognitionException re) {
31846 			_localctx.exception = re;
31847 			_errHandler.reportError(this, re);
31848 			_errHandler.recover(this, re);
31849 		}
31850 		finally {
31851 			exitRule();
31852 		}
31853 		return _localctx;
31854 	}
31855 
31856 	public static class ChangeTrackingOptionListContext extends ParserRuleContext {
31857 		public TerminalNode AUTO_CLEANUP() { return getToken(SQLServerStatementParser.AUTO_CLEANUP, 0); }
31858 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31859 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31860 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31861 		public TerminalNode CHANGE_RETENTION() { return getToken(SQLServerStatementParser.CHANGE_RETENTION, 0); }
31862 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
31863 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
31864 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
31865 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
31866 		public ChangeTrackingOptionListContext(ParserRuleContext parent, int invokingState) {
31867 			super(parent, invokingState);
31868 		}
31869 		@Override public int getRuleIndex() { return RULE_changeTrackingOptionList; }
31870 		@Override
31871 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31872 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitChangeTrackingOptionList(this);
31873 			else return visitor.visitChildren(this);
31874 		}
31875 	}
31876 
31877 	public final ChangeTrackingOptionListContext changeTrackingOptionList() throws RecognitionException {
31878 		ChangeTrackingOptionListContext _localctx = new ChangeTrackingOptionListContext(_ctx, getState());
31879 		enterRule(_localctx, 616, RULE_changeTrackingOptionList);
31880 		int _la;
31881 		try {
31882 			setState(4480);
31883 			_errHandler.sync(this);
31884 			switch (_input.LA(1)) {
31885 			case AUTO_CLEANUP:
31886 				enterOuterAlt(_localctx, 1);
31887 				{
31888 				setState(4473);
31889 				match(AUTO_CLEANUP);
31890 				setState(4474);
31891 				match(EQ_);
31892 				setState(4475);
31893 				_la = _input.LA(1);
31894 				if ( !(_la==ON || _la==OFF) ) {
31895 				_errHandler.recoverInline(this);
31896 				}
31897 				else {
31898 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31899 					_errHandler.reportMatch(this);
31900 					consume();
31901 				}
31902 				}
31903 				break;
31904 			case CHANGE_RETENTION:
31905 				enterOuterAlt(_localctx, 2);
31906 				{
31907 				setState(4476);
31908 				match(CHANGE_RETENTION);
31909 				setState(4477);
31910 				match(EQ_);
31911 				setState(4478);
31912 				match(NUMBER_);
31913 				setState(4479);
31914 				_la = _input.LA(1);
31915 				if ( !(_la==DAYS || _la==MINUTES || _la==HOURS) ) {
31916 				_errHandler.recoverInline(this);
31917 				}
31918 				else {
31919 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31920 					_errHandler.reportMatch(this);
31921 					consume();
31922 				}
31923 				}
31924 				break;
31925 			default:
31926 				throw new NoViableAltException(this);
31927 			}
31928 		}
31929 		catch (RecognitionException re) {
31930 			_localctx.exception = re;
31931 			_errHandler.reportError(this, re);
31932 			_errHandler.recover(this, re);
31933 		}
31934 		finally {
31935 			exitRule();
31936 		}
31937 		return _localctx;
31938 	}
31939 
31940 	public static class CursorOptionContext extends ParserRuleContext {
31941 		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(SQLServerStatementParser.CURSOR_CLOSE_ON_COMMIT, 0); }
31942 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31943 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31944 		public TerminalNode CURSOR_DEFAULT() { return getToken(SQLServerStatementParser.CURSOR_DEFAULT, 0); }
31945 		public TerminalNode LOCAL() { return getToken(SQLServerStatementParser.LOCAL, 0); }
31946 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
31947 		public CursorOptionContext(ParserRuleContext parent, int invokingState) {
31948 			super(parent, invokingState);
31949 		}
31950 		@Override public int getRuleIndex() { return RULE_cursorOption; }
31951 		@Override
31952 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31953 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorOption(this);
31954 			else return visitor.visitChildren(this);
31955 		}
31956 	}
31957 
31958 	public final CursorOptionContext cursorOption() throws RecognitionException {
31959 		CursorOptionContext _localctx = new CursorOptionContext(_ctx, getState());
31960 		enterRule(_localctx, 618, RULE_cursorOption);
31961 		int _la;
31962 		try {
31963 			setState(4486);
31964 			_errHandler.sync(this);
31965 			switch (_input.LA(1)) {
31966 			case CURSOR_CLOSE_ON_COMMIT:
31967 				enterOuterAlt(_localctx, 1);
31968 				{
31969 				setState(4482);
31970 				match(CURSOR_CLOSE_ON_COMMIT);
31971 				setState(4483);
31972 				_la = _input.LA(1);
31973 				if ( !(_la==ON || _la==OFF) ) {
31974 				_errHandler.recoverInline(this);
31975 				}
31976 				else {
31977 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31978 					_errHandler.reportMatch(this);
31979 					consume();
31980 				}
31981 				}
31982 				break;
31983 			case CURSOR_DEFAULT:
31984 				enterOuterAlt(_localctx, 2);
31985 				{
31986 				setState(4484);
31987 				match(CURSOR_DEFAULT);
31988 				setState(4485);
31989 				_la = _input.LA(1);
31990 				if ( !(_la==LOCAL || _la==GLOBAL) ) {
31991 				_errHandler.recoverInline(this);
31992 				}
31993 				else {
31994 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31995 					_errHandler.reportMatch(this);
31996 					consume();
31997 				}
31998 				}
31999 				break;
32000 			default:
32001 				throw new NoViableAltException(this);
32002 			}
32003 		}
32004 		catch (RecognitionException re) {
32005 			_localctx.exception = re;
32006 			_errHandler.reportError(this, re);
32007 			_errHandler.recover(this, re);
32008 		}
32009 		finally {
32010 			exitRule();
32011 		}
32012 		return _localctx;
32013 	}
32014 
32015 	public static class ExternalAccessOptionContext extends ParserRuleContext {
32016 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
32017 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32018 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32019 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
32020 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
32021 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32022 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
32023 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
32024 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
32025 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
32026 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
32027 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
32028 		public ExternalAccessOptionContext(ParserRuleContext parent, int invokingState) {
32029 			super(parent, invokingState);
32030 		}
32031 		@Override public int getRuleIndex() { return RULE_externalAccessOption; }
32032 		@Override
32033 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32034 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExternalAccessOption(this);
32035 			else return visitor.visitChildren(this);
32036 		}
32037 	}
32038 
32039 	public final ExternalAccessOptionContext externalAccessOption() throws RecognitionException {
32040 		ExternalAccessOptionContext _localctx = new ExternalAccessOptionContext(_ctx, getState());
32041 		enterRule(_localctx, 620, RULE_externalAccessOption);
32042 		int _la;
32043 		try {
32044 			setState(4507);
32045 			_errHandler.sync(this);
32046 			switch (_input.LA(1)) {
32047 			case DB_CHAINING:
32048 				enterOuterAlt(_localctx, 1);
32049 				{
32050 				setState(4488);
32051 				match(DB_CHAINING);
32052 				setState(4489);
32053 				_la = _input.LA(1);
32054 				if ( !(_la==ON || _la==OFF) ) {
32055 				_errHandler.recoverInline(this);
32056 				}
32057 				else {
32058 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32059 					_errHandler.reportMatch(this);
32060 					consume();
32061 				}
32062 				}
32063 				break;
32064 			case TRUSTWORTHY:
32065 				enterOuterAlt(_localctx, 2);
32066 				{
32067 				setState(4490);
32068 				match(TRUSTWORTHY);
32069 				setState(4491);
32070 				_la = _input.LA(1);
32071 				if ( !(_la==ON || _la==OFF) ) {
32072 				_errHandler.recoverInline(this);
32073 				}
32074 				else {
32075 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32076 					_errHandler.reportMatch(this);
32077 					consume();
32078 				}
32079 				}
32080 				break;
32081 			case DEFAULT_FULLTEXT_LANGUAGE:
32082 				enterOuterAlt(_localctx, 3);
32083 				{
32084 				setState(4492);
32085 				match(DEFAULT_FULLTEXT_LANGUAGE);
32086 				setState(4493);
32087 				match(EQ_);
32088 				setState(4494);
32089 				match(STRING_);
32090 				}
32091 				break;
32092 			case DEFAULT_LANGUAGE:
32093 				enterOuterAlt(_localctx, 4);
32094 				{
32095 				setState(4495);
32096 				match(DEFAULT_LANGUAGE);
32097 				setState(4496);
32098 				match(EQ_);
32099 				setState(4497);
32100 				match(STRING_);
32101 				}
32102 				break;
32103 			case NESTED_TRIGGERS:
32104 				enterOuterAlt(_localctx, 5);
32105 				{
32106 				setState(4498);
32107 				match(NESTED_TRIGGERS);
32108 				setState(4499);
32109 				match(EQ_);
32110 				setState(4500);
32111 				_la = _input.LA(1);
32112 				if ( !(_la==ON || _la==OFF) ) {
32113 				_errHandler.recoverInline(this);
32114 				}
32115 				else {
32116 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32117 					_errHandler.reportMatch(this);
32118 					consume();
32119 				}
32120 				}
32121 				break;
32122 			case TRANSFORM_NOISE_WORDS:
32123 				enterOuterAlt(_localctx, 6);
32124 				{
32125 				setState(4501);
32126 				match(TRANSFORM_NOISE_WORDS);
32127 				setState(4502);
32128 				match(EQ_);
32129 				setState(4503);
32130 				_la = _input.LA(1);
32131 				if ( !(_la==ON || _la==OFF) ) {
32132 				_errHandler.recoverInline(this);
32133 				}
32134 				else {
32135 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32136 					_errHandler.reportMatch(this);
32137 					consume();
32138 				}
32139 				}
32140 				break;
32141 			case TWO_DIGIT_YEAR_CUTOFF:
32142 				enterOuterAlt(_localctx, 7);
32143 				{
32144 				setState(4504);
32145 				match(TWO_DIGIT_YEAR_CUTOFF);
32146 				setState(4505);
32147 				match(EQ_);
32148 				setState(4506);
32149 				match(NUMBER_);
32150 				}
32151 				break;
32152 			default:
32153 				throw new NoViableAltException(this);
32154 			}
32155 		}
32156 		catch (RecognitionException re) {
32157 			_localctx.exception = re;
32158 			_errHandler.reportError(this, re);
32159 			_errHandler.recover(this, re);
32160 		}
32161 		finally {
32162 			exitRule();
32163 		}
32164 		return _localctx;
32165 	}
32166 
32167 	public static class QueryStoreOptionsContext extends ParserRuleContext {
32168 		public TerminalNode QUERY_STORE() { return getToken(SQLServerStatementParser.QUERY_STORE, 0); }
32169 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32170 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32171 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32172 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32173 		public List<QueryStoreOptionListContext> queryStoreOptionList() {
32174 			return getRuleContexts(QueryStoreOptionListContext.class);
32175 		}
32176 		public QueryStoreOptionListContext queryStoreOptionList(int i) {
32177 			return getRuleContext(QueryStoreOptionListContext.class,i);
32178 		}
32179 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32180 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
32181 		public TerminalNode COMMA_(int i) {
32182 			return getToken(SQLServerStatementParser.COMMA_, i);
32183 		}
32184 		public QueryStoreOptionsContext(ParserRuleContext parent, int invokingState) {
32185 			super(parent, invokingState);
32186 		}
32187 		@Override public int getRuleIndex() { return RULE_queryStoreOptions; }
32188 		@Override
32189 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32190 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryStoreOptions(this);
32191 			else return visitor.visitChildren(this);
32192 		}
32193 	}
32194 
32195 	public final QueryStoreOptionsContext queryStoreOptions() throws RecognitionException {
32196 		QueryStoreOptionsContext _localctx = new QueryStoreOptionsContext(_ctx, getState());
32197 		enterRule(_localctx, 622, RULE_queryStoreOptions);
32198 		int _la;
32199 		try {
32200 			enterOuterAlt(_localctx, 1);
32201 			{
32202 			setState(4509);
32203 			match(QUERY_STORE);
32204 			setState(4529);
32205 			_errHandler.sync(this);
32206 			switch ( getInterpreter().adaptivePredict(_input,484,_ctx) ) {
32207 			case 1:
32208 				{
32209 				setState(4510);
32210 				match(EQ_);
32211 				setState(4511);
32212 				match(OFF);
32213 				}
32214 				break;
32215 			case 2:
32216 				{
32217 				setState(4514);
32218 				_errHandler.sync(this);
32219 				_la = _input.LA(1);
32220 				if (_la==EQ_) {
32221 					{
32222 					setState(4512);
32223 					match(EQ_);
32224 					setState(4513);
32225 					match(ON);
32226 					}
32227 				}
32228 
32229 				setState(4527);
32230 				_errHandler.sync(this);
32231 				switch ( getInterpreter().adaptivePredict(_input,483,_ctx) ) {
32232 				case 1:
32233 					{
32234 					setState(4516);
32235 					match(LP_);
32236 					setState(4517);
32237 					queryStoreOptionList();
32238 					setState(4522);
32239 					_errHandler.sync(this);
32240 					_la = _input.LA(1);
32241 					while (_la==COMMA_) {
32242 						{
32243 						{
32244 						setState(4518);
32245 						match(COMMA_);
32246 						setState(4519);
32247 						queryStoreOptionList();
32248 						}
32249 						}
32250 						setState(4524);
32251 						_errHandler.sync(this);
32252 						_la = _input.LA(1);
32253 					}
32254 					setState(4525);
32255 					match(RP_);
32256 					}
32257 					break;
32258 				}
32259 				}
32260 				break;
32261 			}
32262 			}
32263 		}
32264 		catch (RecognitionException re) {
32265 			_localctx.exception = re;
32266 			_errHandler.reportError(this, re);
32267 			_errHandler.recover(this, re);
32268 		}
32269 		finally {
32270 			exitRule();
32271 		}
32272 		return _localctx;
32273 	}
32274 
32275 	public static class QueryStoreOptionListContext extends ParserRuleContext {
32276 		public TerminalNode OPERATION_MODE() { return getToken(SQLServerStatementParser.OPERATION_MODE, 0); }
32277 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
32278 		public TerminalNode EQ_(int i) {
32279 			return getToken(SQLServerStatementParser.EQ_, i);
32280 		}
32281 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
32282 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
32283 		public TerminalNode CLEANUP_POLICY() { return getToken(SQLServerStatementParser.CLEANUP_POLICY, 0); }
32284 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32285 		public TerminalNode STALE_QUERY_THRESHOLD_DAYS() { return getToken(SQLServerStatementParser.STALE_QUERY_THRESHOLD_DAYS, 0); }
32286 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
32287 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32288 		public TerminalNode DATA_FLUSH_INTERVAL_SECONDS() { return getToken(SQLServerStatementParser.DATA_FLUSH_INTERVAL_SECONDS, 0); }
32289 		public TerminalNode MAX_STORAGE_SIZE_MB() { return getToken(SQLServerStatementParser.MAX_STORAGE_SIZE_MB, 0); }
32290 		public TerminalNode INTERVAL_LENGTH_MINUTES() { return getToken(SQLServerStatementParser.INTERVAL_LENGTH_MINUTES, 0); }
32291 		public TerminalNode SIZE_BASED_CLEANUP_MODE() { return getToken(SQLServerStatementParser.SIZE_BASED_CLEANUP_MODE, 0); }
32292 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
32293 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32294 		public TerminalNode QUERY_CAPTURE_MODE() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_MODE, 0); }
32295 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
32296 		public TerminalNode CUSTOM() { return getToken(SQLServerStatementParser.CUSTOM, 0); }
32297 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
32298 		public TerminalNode MAX_PLANS_PER_QUERY() { return getToken(SQLServerStatementParser.MAX_PLANS_PER_QUERY, 0); }
32299 		public TerminalNode WAIT_STATS_CAPTURE_MODE() { return getToken(SQLServerStatementParser.WAIT_STATS_CAPTURE_MODE, 0); }
32300 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32301 		public TerminalNode QUERY_CAPTURE_POLICY() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_POLICY, 0); }
32302 		public List<QueryCapturePolicyOptionListContext> queryCapturePolicyOptionList() {
32303 			return getRuleContexts(QueryCapturePolicyOptionListContext.class);
32304 		}
32305 		public QueryCapturePolicyOptionListContext queryCapturePolicyOptionList(int i) {
32306 			return getRuleContext(QueryCapturePolicyOptionListContext.class,i);
32307 		}
32308 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
32309 		public TerminalNode COMMA_(int i) {
32310 			return getToken(SQLServerStatementParser.COMMA_, i);
32311 		}
32312 		public QueryStoreOptionListContext(ParserRuleContext parent, int invokingState) {
32313 			super(parent, invokingState);
32314 		}
32315 		@Override public int getRuleIndex() { return RULE_queryStoreOptionList; }
32316 		@Override
32317 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32318 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryStoreOptionList(this);
32319 			else return visitor.visitChildren(this);
32320 		}
32321 	}
32322 
32323 	public final QueryStoreOptionListContext queryStoreOptionList() throws RecognitionException {
32324 		QueryStoreOptionListContext _localctx = new QueryStoreOptionListContext(_ctx, getState());
32325 		enterRule(_localctx, 624, RULE_queryStoreOptionList);
32326 		int _la;
32327 		try {
32328 			setState(4575);
32329 			_errHandler.sync(this);
32330 			switch (_input.LA(1)) {
32331 			case OPERATION_MODE:
32332 				enterOuterAlt(_localctx, 1);
32333 				{
32334 				setState(4531);
32335 				match(OPERATION_MODE);
32336 				setState(4532);
32337 				match(EQ_);
32338 				setState(4533);
32339 				_la = _input.LA(1);
32340 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
32341 				_errHandler.recoverInline(this);
32342 				}
32343 				else {
32344 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32345 					_errHandler.reportMatch(this);
32346 					consume();
32347 				}
32348 				}
32349 				break;
32350 			case CLEANUP_POLICY:
32351 				enterOuterAlt(_localctx, 2);
32352 				{
32353 				setState(4534);
32354 				match(CLEANUP_POLICY);
32355 				setState(4535);
32356 				match(EQ_);
32357 				setState(4536);
32358 				match(LP_);
32359 				setState(4537);
32360 				match(STALE_QUERY_THRESHOLD_DAYS);
32361 				setState(4538);
32362 				match(EQ_);
32363 				setState(4539);
32364 				match(NUMBER_);
32365 				setState(4540);
32366 				match(RP_);
32367 				}
32368 				break;
32369 			case DATA_FLUSH_INTERVAL_SECONDS:
32370 				enterOuterAlt(_localctx, 3);
32371 				{
32372 				setState(4541);
32373 				match(DATA_FLUSH_INTERVAL_SECONDS);
32374 				setState(4542);
32375 				match(EQ_);
32376 				setState(4543);
32377 				match(NUMBER_);
32378 				}
32379 				break;
32380 			case MAX_STORAGE_SIZE_MB:
32381 				enterOuterAlt(_localctx, 4);
32382 				{
32383 				setState(4544);
32384 				match(MAX_STORAGE_SIZE_MB);
32385 				setState(4545);
32386 				match(EQ_);
32387 				setState(4546);
32388 				match(NUMBER_);
32389 				}
32390 				break;
32391 			case INTERVAL_LENGTH_MINUTES:
32392 				enterOuterAlt(_localctx, 5);
32393 				{
32394 				setState(4547);
32395 				match(INTERVAL_LENGTH_MINUTES);
32396 				setState(4548);
32397 				match(EQ_);
32398 				setState(4549);
32399 				match(NUMBER_);
32400 				}
32401 				break;
32402 			case SIZE_BASED_CLEANUP_MODE:
32403 				enterOuterAlt(_localctx, 6);
32404 				{
32405 				setState(4550);
32406 				match(SIZE_BASED_CLEANUP_MODE);
32407 				setState(4551);
32408 				match(EQ_);
32409 				setState(4552);
32410 				_la = _input.LA(1);
32411 				if ( !(_la==AUTO || _la==OFF) ) {
32412 				_errHandler.recoverInline(this);
32413 				}
32414 				else {
32415 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32416 					_errHandler.reportMatch(this);
32417 					consume();
32418 				}
32419 				}
32420 				break;
32421 			case QUERY_CAPTURE_MODE:
32422 				enterOuterAlt(_localctx, 7);
32423 				{
32424 				setState(4553);
32425 				match(QUERY_CAPTURE_MODE);
32426 				setState(4554);
32427 				match(EQ_);
32428 				setState(4555);
32429 				_la = _input.LA(1);
32430 				if ( !(_la==ALL || _la==AUTO || _la==NONE || _la==CUSTOM) ) {
32431 				_errHandler.recoverInline(this);
32432 				}
32433 				else {
32434 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32435 					_errHandler.reportMatch(this);
32436 					consume();
32437 				}
32438 				}
32439 				break;
32440 			case MAX_PLANS_PER_QUERY:
32441 				enterOuterAlt(_localctx, 8);
32442 				{
32443 				setState(4556);
32444 				match(MAX_PLANS_PER_QUERY);
32445 				setState(4557);
32446 				match(EQ_);
32447 				setState(4558);
32448 				match(NUMBER_);
32449 				}
32450 				break;
32451 			case WAIT_STATS_CAPTURE_MODE:
32452 				enterOuterAlt(_localctx, 9);
32453 				{
32454 				setState(4559);
32455 				match(WAIT_STATS_CAPTURE_MODE);
32456 				setState(4560);
32457 				match(EQ_);
32458 				setState(4561);
32459 				_la = _input.LA(1);
32460 				if ( !(_la==ON || _la==OFF) ) {
32461 				_errHandler.recoverInline(this);
32462 				}
32463 				else {
32464 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32465 					_errHandler.reportMatch(this);
32466 					consume();
32467 				}
32468 				}
32469 				break;
32470 			case QUERY_CAPTURE_POLICY:
32471 				enterOuterAlt(_localctx, 10);
32472 				{
32473 				setState(4562);
32474 				match(QUERY_CAPTURE_POLICY);
32475 				setState(4563);
32476 				match(EQ_);
32477 				setState(4564);
32478 				match(LP_);
32479 				setState(4565);
32480 				queryCapturePolicyOptionList();
32481 				setState(4570);
32482 				_errHandler.sync(this);
32483 				_la = _input.LA(1);
32484 				while (_la==COMMA_) {
32485 					{
32486 					{
32487 					setState(4566);
32488 					match(COMMA_);
32489 					setState(4567);
32490 					queryCapturePolicyOptionList();
32491 					}
32492 					}
32493 					setState(4572);
32494 					_errHandler.sync(this);
32495 					_la = _input.LA(1);
32496 				}
32497 				setState(4573);
32498 				match(RP_);
32499 				}
32500 				break;
32501 			default:
32502 				throw new NoViableAltException(this);
32503 			}
32504 		}
32505 		catch (RecognitionException re) {
32506 			_localctx.exception = re;
32507 			_errHandler.reportError(this, re);
32508 			_errHandler.recover(this, re);
32509 		}
32510 		finally {
32511 			exitRule();
32512 		}
32513 		return _localctx;
32514 	}
32515 
32516 	public static class QueryCapturePolicyOptionListContext extends ParserRuleContext {
32517 		public TerminalNode STALE_CAPTURE_POLICY_THRESHOLD() { return getToken(SQLServerStatementParser.STALE_CAPTURE_POLICY_THRESHOLD, 0); }
32518 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32519 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
32520 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
32521 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
32522 		public TerminalNode EXECUTION_COUNT() { return getToken(SQLServerStatementParser.EXECUTION_COUNT, 0); }
32523 		public TerminalNode TOTAL_COMPILE_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_COMPILE_CPU_TIME_MS, 0); }
32524 		public TerminalNode TOTAL_EXECUTION_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_EXECUTION_CPU_TIME_MS, 0); }
32525 		public QueryCapturePolicyOptionListContext(ParserRuleContext parent, int invokingState) {
32526 			super(parent, invokingState);
32527 		}
32528 		@Override public int getRuleIndex() { return RULE_queryCapturePolicyOptionList; }
32529 		@Override
32530 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32531 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryCapturePolicyOptionList(this);
32532 			else return visitor.visitChildren(this);
32533 		}
32534 	}
32535 
32536 	public final QueryCapturePolicyOptionListContext queryCapturePolicyOptionList() throws RecognitionException {
32537 		QueryCapturePolicyOptionListContext _localctx = new QueryCapturePolicyOptionListContext(_ctx, getState());
32538 		enterRule(_localctx, 626, RULE_queryCapturePolicyOptionList);
32539 		int _la;
32540 		try {
32541 			setState(4590);
32542 			_errHandler.sync(this);
32543 			switch (_input.LA(1)) {
32544 			case STALE_CAPTURE_POLICY_THRESHOLD:
32545 				enterOuterAlt(_localctx, 1);
32546 				{
32547 				setState(4577);
32548 				match(STALE_CAPTURE_POLICY_THRESHOLD);
32549 				setState(4578);
32550 				match(EQ_);
32551 				setState(4579);
32552 				match(NUMBER_);
32553 				setState(4580);
32554 				_la = _input.LA(1);
32555 				if ( !(_la==DAYS || _la==HOURS) ) {
32556 				_errHandler.recoverInline(this);
32557 				}
32558 				else {
32559 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32560 					_errHandler.reportMatch(this);
32561 					consume();
32562 				}
32563 				}
32564 				break;
32565 			case EXECUTION_COUNT:
32566 				enterOuterAlt(_localctx, 2);
32567 				{
32568 				setState(4581);
32569 				match(EXECUTION_COUNT);
32570 				setState(4582);
32571 				match(EQ_);
32572 				setState(4583);
32573 				match(NUMBER_);
32574 				}
32575 				break;
32576 			case TOTAL_COMPILE_CPU_TIME_MS:
32577 				enterOuterAlt(_localctx, 3);
32578 				{
32579 				setState(4584);
32580 				match(TOTAL_COMPILE_CPU_TIME_MS);
32581 				setState(4585);
32582 				match(EQ_);
32583 				setState(4586);
32584 				match(NUMBER_);
32585 				}
32586 				break;
32587 			case TOTAL_EXECUTION_CPU_TIME_MS:
32588 				enterOuterAlt(_localctx, 4);
32589 				{
32590 				setState(4587);
32591 				match(TOTAL_EXECUTION_CPU_TIME_MS);
32592 				setState(4588);
32593 				match(EQ_);
32594 				setState(4589);
32595 				match(NUMBER_);
32596 				}
32597 				break;
32598 			default:
32599 				throw new NoViableAltException(this);
32600 			}
32601 		}
32602 		catch (RecognitionException re) {
32603 			_localctx.exception = re;
32604 			_errHandler.reportError(this, re);
32605 			_errHandler.recover(this, re);
32606 		}
32607 		finally {
32608 			exitRule();
32609 		}
32610 		return _localctx;
32611 	}
32612 
32613 	public static class RecoveryOptionContext extends ParserRuleContext {
32614 		public TerminalNode RECOVERY() { return getToken(SQLServerStatementParser.RECOVERY, 0); }
32615 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
32616 		public TerminalNode BULK_LOGGED() { return getToken(SQLServerStatementParser.BULK_LOGGED, 0); }
32617 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
32618 		public TerminalNode TORN_PAGE_DETECTION() { return getToken(SQLServerStatementParser.TORN_PAGE_DETECTION, 0); }
32619 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32620 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32621 		public TerminalNode PAGE_VERIFY() { return getToken(SQLServerStatementParser.PAGE_VERIFY, 0); }
32622 		public TerminalNode CHECKSUM() { return getToken(SQLServerStatementParser.CHECKSUM, 0); }
32623 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
32624 		public RecoveryOptionContext(ParserRuleContext parent, int invokingState) {
32625 			super(parent, invokingState);
32626 		}
32627 		@Override public int getRuleIndex() { return RULE_recoveryOption; }
32628 		@Override
32629 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32630 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRecoveryOption(this);
32631 			else return visitor.visitChildren(this);
32632 		}
32633 	}
32634 
32635 	public final RecoveryOptionContext recoveryOption() throws RecognitionException {
32636 		RecoveryOptionContext _localctx = new RecoveryOptionContext(_ctx, getState());
32637 		enterRule(_localctx, 628, RULE_recoveryOption);
32638 		int _la;
32639 		try {
32640 			setState(4598);
32641 			_errHandler.sync(this);
32642 			switch (_input.LA(1)) {
32643 			case RECOVERY:
32644 				enterOuterAlt(_localctx, 1);
32645 				{
32646 				setState(4592);
32647 				match(RECOVERY);
32648 				setState(4593);
32649 				_la = _input.LA(1);
32650 				if ( !(_la==FULL || _la==SIMPLE || _la==BULK_LOGGED) ) {
32651 				_errHandler.recoverInline(this);
32652 				}
32653 				else {
32654 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32655 					_errHandler.reportMatch(this);
32656 					consume();
32657 				}
32658 				}
32659 				break;
32660 			case TORN_PAGE_DETECTION:
32661 				enterOuterAlt(_localctx, 2);
32662 				{
32663 				setState(4594);
32664 				match(TORN_PAGE_DETECTION);
32665 				setState(4595);
32666 				_la = _input.LA(1);
32667 				if ( !(_la==ON || _la==OFF) ) {
32668 				_errHandler.recoverInline(this);
32669 				}
32670 				else {
32671 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32672 					_errHandler.reportMatch(this);
32673 					consume();
32674 				}
32675 				}
32676 				break;
32677 			case PAGE_VERIFY:
32678 				enterOuterAlt(_localctx, 3);
32679 				{
32680 				setState(4596);
32681 				match(PAGE_VERIFY);
32682 				setState(4597);
32683 				_la = _input.LA(1);
32684 				if ( !(_la==NONE || _la==CHECKSUM || _la==TORN_PAGE_DETECTION) ) {
32685 				_errHandler.recoverInline(this);
32686 				}
32687 				else {
32688 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32689 					_errHandler.reportMatch(this);
32690 					consume();
32691 				}
32692 				}
32693 				break;
32694 			default:
32695 				throw new NoViableAltException(this);
32696 			}
32697 		}
32698 		catch (RecognitionException re) {
32699 			_localctx.exception = re;
32700 			_errHandler.reportError(this, re);
32701 			_errHandler.recover(this, re);
32702 		}
32703 		finally {
32704 			exitRule();
32705 		}
32706 		return _localctx;
32707 	}
32708 
32709 	public static class SqlOptionContext extends ParserRuleContext {
32710 		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(SQLServerStatementParser.ANSI_NULL_DEFAULT, 0); }
32711 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32712 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32713 		public TerminalNode ANSI_NULLS() { return getToken(SQLServerStatementParser.ANSI_NULLS, 0); }
32714 		public TerminalNode ANSI_PADDING() { return getToken(SQLServerStatementParser.ANSI_PADDING, 0); }
32715 		public TerminalNode ANSI_WARNINGS() { return getToken(SQLServerStatementParser.ANSI_WARNINGS, 0); }
32716 		public TerminalNode ARITHABORT() { return getToken(SQLServerStatementParser.ARITHABORT, 0); }
32717 		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(SQLServerStatementParser.COMPATIBILITY_LEVEL, 0); }
32718 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32719 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
32720 		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(SQLServerStatementParser.CONCAT_NULL_YIELDS_NULL, 0); }
32721 		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(SQLServerStatementParser.NUMERIC_ROUNDABORT, 0); }
32722 		public TerminalNode QUOTED_IDENTIFIER() { return getToken(SQLServerStatementParser.QUOTED_IDENTIFIER, 0); }
32723 		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(SQLServerStatementParser.RECURSIVE_TRIGGERS, 0); }
32724 		public SqlOptionContext(ParserRuleContext parent, int invokingState) {
32725 			super(parent, invokingState);
32726 		}
32727 		@Override public int getRuleIndex() { return RULE_sqlOption; }
32728 		@Override
32729 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32730 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSqlOption(this);
32731 			else return visitor.visitChildren(this);
32732 		}
32733 	}
32734 
32735 	public final SqlOptionContext sqlOption() throws RecognitionException {
32736 		SqlOptionContext _localctx = new SqlOptionContext(_ctx, getState());
32737 		enterRule(_localctx, 630, RULE_sqlOption);
32738 		int _la;
32739 		try {
32740 			setState(4621);
32741 			_errHandler.sync(this);
32742 			switch (_input.LA(1)) {
32743 			case ANSI_NULL_DEFAULT:
32744 				enterOuterAlt(_localctx, 1);
32745 				{
32746 				setState(4600);
32747 				match(ANSI_NULL_DEFAULT);
32748 				setState(4601);
32749 				_la = _input.LA(1);
32750 				if ( !(_la==ON || _la==OFF) ) {
32751 				_errHandler.recoverInline(this);
32752 				}
32753 				else {
32754 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32755 					_errHandler.reportMatch(this);
32756 					consume();
32757 				}
32758 				}
32759 				break;
32760 			case ANSI_NULLS:
32761 				enterOuterAlt(_localctx, 2);
32762 				{
32763 				setState(4602);
32764 				match(ANSI_NULLS);
32765 				setState(4603);
32766 				_la = _input.LA(1);
32767 				if ( !(_la==ON || _la==OFF) ) {
32768 				_errHandler.recoverInline(this);
32769 				}
32770 				else {
32771 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32772 					_errHandler.reportMatch(this);
32773 					consume();
32774 				}
32775 				}
32776 				break;
32777 			case ANSI_PADDING:
32778 				enterOuterAlt(_localctx, 3);
32779 				{
32780 				setState(4604);
32781 				match(ANSI_PADDING);
32782 				setState(4605);
32783 				_la = _input.LA(1);
32784 				if ( !(_la==ON || _la==OFF) ) {
32785 				_errHandler.recoverInline(this);
32786 				}
32787 				else {
32788 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32789 					_errHandler.reportMatch(this);
32790 					consume();
32791 				}
32792 				}
32793 				break;
32794 			case ANSI_WARNINGS:
32795 				enterOuterAlt(_localctx, 4);
32796 				{
32797 				setState(4606);
32798 				match(ANSI_WARNINGS);
32799 				setState(4607);
32800 				_la = _input.LA(1);
32801 				if ( !(_la==ON || _la==OFF) ) {
32802 				_errHandler.recoverInline(this);
32803 				}
32804 				else {
32805 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32806 					_errHandler.reportMatch(this);
32807 					consume();
32808 				}
32809 				}
32810 				break;
32811 			case ARITHABORT:
32812 				enterOuterAlt(_localctx, 5);
32813 				{
32814 				setState(4608);
32815 				match(ARITHABORT);
32816 				setState(4609);
32817 				_la = _input.LA(1);
32818 				if ( !(_la==ON || _la==OFF) ) {
32819 				_errHandler.recoverInline(this);
32820 				}
32821 				else {
32822 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32823 					_errHandler.reportMatch(this);
32824 					consume();
32825 				}
32826 				}
32827 				break;
32828 			case COMPATIBILITY_LEVEL:
32829 				enterOuterAlt(_localctx, 6);
32830 				{
32831 				setState(4610);
32832 				match(COMPATIBILITY_LEVEL);
32833 				setState(4611);
32834 				match(EQ_);
32835 				setState(4612);
32836 				match(NUMBER_);
32837 				}
32838 				break;
32839 			case CONCAT_NULL_YIELDS_NULL:
32840 				enterOuterAlt(_localctx, 7);
32841 				{
32842 				setState(4613);
32843 				match(CONCAT_NULL_YIELDS_NULL);
32844 				setState(4614);
32845 				_la = _input.LA(1);
32846 				if ( !(_la==ON || _la==OFF) ) {
32847 				_errHandler.recoverInline(this);
32848 				}
32849 				else {
32850 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32851 					_errHandler.reportMatch(this);
32852 					consume();
32853 				}
32854 				}
32855 				break;
32856 			case NUMERIC_ROUNDABORT:
32857 				enterOuterAlt(_localctx, 8);
32858 				{
32859 				setState(4615);
32860 				match(NUMERIC_ROUNDABORT);
32861 				setState(4616);
32862 				_la = _input.LA(1);
32863 				if ( !(_la==ON || _la==OFF) ) {
32864 				_errHandler.recoverInline(this);
32865 				}
32866 				else {
32867 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32868 					_errHandler.reportMatch(this);
32869 					consume();
32870 				}
32871 				}
32872 				break;
32873 			case QUOTED_IDENTIFIER:
32874 				enterOuterAlt(_localctx, 9);
32875 				{
32876 				setState(4617);
32877 				match(QUOTED_IDENTIFIER);
32878 				setState(4618);
32879 				_la = _input.LA(1);
32880 				if ( !(_la==ON || _la==OFF) ) {
32881 				_errHandler.recoverInline(this);
32882 				}
32883 				else {
32884 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32885 					_errHandler.reportMatch(this);
32886 					consume();
32887 				}
32888 				}
32889 				break;
32890 			case RECURSIVE_TRIGGERS:
32891 				enterOuterAlt(_localctx, 10);
32892 				{
32893 				setState(4619);
32894 				match(RECURSIVE_TRIGGERS);
32895 				setState(4620);
32896 				_la = _input.LA(1);
32897 				if ( !(_la==ON || _la==OFF) ) {
32898 				_errHandler.recoverInline(this);
32899 				}
32900 				else {
32901 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32902 					_errHandler.reportMatch(this);
32903 					consume();
32904 				}
32905 				}
32906 				break;
32907 			default:
32908 				throw new NoViableAltException(this);
32909 			}
32910 		}
32911 		catch (RecognitionException re) {
32912 			_localctx.exception = re;
32913 			_errHandler.reportError(this, re);
32914 			_errHandler.recover(this, re);
32915 		}
32916 		finally {
32917 			exitRule();
32918 		}
32919 		return _localctx;
32920 	}
32921 
32922 	public static class SnapshotOptionContext extends ParserRuleContext {
32923 		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(SQLServerStatementParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
32924 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32925 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32926 		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(SQLServerStatementParser.READ_COMMITTED_SNAPSHOT, 0); }
32927 		public TerminalNode MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, 0); }
32928 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32929 		public SnapshotOptionContext(ParserRuleContext parent, int invokingState) {
32930 			super(parent, invokingState);
32931 		}
32932 		@Override public int getRuleIndex() { return RULE_snapshotOption; }
32933 		@Override
32934 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32935 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSnapshotOption(this);
32936 			else return visitor.visitChildren(this);
32937 		}
32938 	}
32939 
32940 	public final SnapshotOptionContext snapshotOption() throws RecognitionException {
32941 		SnapshotOptionContext _localctx = new SnapshotOptionContext(_ctx, getState());
32942 		enterRule(_localctx, 632, RULE_snapshotOption);
32943 		int _la;
32944 		try {
32945 			setState(4630);
32946 			_errHandler.sync(this);
32947 			switch (_input.LA(1)) {
32948 			case ALLOW_SNAPSHOT_ISOLATION:
32949 				enterOuterAlt(_localctx, 1);
32950 				{
32951 				setState(4623);
32952 				match(ALLOW_SNAPSHOT_ISOLATION);
32953 				setState(4624);
32954 				_la = _input.LA(1);
32955 				if ( !(_la==ON || _la==OFF) ) {
32956 				_errHandler.recoverInline(this);
32957 				}
32958 				else {
32959 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32960 					_errHandler.reportMatch(this);
32961 					consume();
32962 				}
32963 				}
32964 				break;
32965 			case READ_COMMITTED_SNAPSHOT:
32966 				enterOuterAlt(_localctx, 2);
32967 				{
32968 				setState(4625);
32969 				match(READ_COMMITTED_SNAPSHOT);
32970 				setState(4626);
32971 				_la = _input.LA(1);
32972 				if ( !(_la==ON || _la==OFF) ) {
32973 				_errHandler.recoverInline(this);
32974 				}
32975 				else {
32976 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32977 					_errHandler.reportMatch(this);
32978 					consume();
32979 				}
32980 				}
32981 				break;
32982 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
32983 				enterOuterAlt(_localctx, 3);
32984 				{
32985 				setState(4627);
32986 				match(MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT);
32987 				setState(4628);
32988 				match(EQ_);
32989 				setState(4629);
32990 				_la = _input.LA(1);
32991 				if ( !(_la==ON || _la==OFF) ) {
32992 				_errHandler.recoverInline(this);
32993 				}
32994 				else {
32995 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32996 					_errHandler.reportMatch(this);
32997 					consume();
32998 				}
32999 				}
33000 				break;
33001 			default:
33002 				throw new NoViableAltException(this);
33003 			}
33004 		}
33005 		catch (RecognitionException re) {
33006 			_localctx.exception = re;
33007 			_errHandler.reportError(this, re);
33008 			_errHandler.recover(this, re);
33009 		}
33010 		finally {
33011 			exitRule();
33012 		}
33013 		return _localctx;
33014 	}
33015 
33016 	public static class ServiceBrokerOptionContext extends ParserRuleContext {
33017 		public TerminalNode ENABLE_BROKER() { return getToken(SQLServerStatementParser.ENABLE_BROKER, 0); }
33018 		public TerminalNode DISABLE_BROKER() { return getToken(SQLServerStatementParser.DISABLE_BROKER, 0); }
33019 		public TerminalNode NEW_BROKER() { return getToken(SQLServerStatementParser.NEW_BROKER, 0); }
33020 		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(SQLServerStatementParser.ERROR_BROKER_CONVERSATIONS, 0); }
33021 		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(SQLServerStatementParser.HONOR_BROKER_PRIORITY, 0); }
33022 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33023 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33024 		public ServiceBrokerOptionContext(ParserRuleContext parent, int invokingState) {
33025 			super(parent, invokingState);
33026 		}
33027 		@Override public int getRuleIndex() { return RULE_serviceBrokerOption; }
33028 		@Override
33029 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33030 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerOption(this);
33031 			else return visitor.visitChildren(this);
33032 		}
33033 	}
33034 
33035 	public final ServiceBrokerOptionContext serviceBrokerOption() throws RecognitionException {
33036 		ServiceBrokerOptionContext _localctx = new ServiceBrokerOptionContext(_ctx, getState());
33037 		enterRule(_localctx, 634, RULE_serviceBrokerOption);
33038 		int _la;
33039 		try {
33040 			setState(4638);
33041 			_errHandler.sync(this);
33042 			switch (_input.LA(1)) {
33043 			case ENABLE_BROKER:
33044 				enterOuterAlt(_localctx, 1);
33045 				{
33046 				setState(4632);
33047 				match(ENABLE_BROKER);
33048 				}
33049 				break;
33050 			case DISABLE_BROKER:
33051 				enterOuterAlt(_localctx, 2);
33052 				{
33053 				setState(4633);
33054 				match(DISABLE_BROKER);
33055 				}
33056 				break;
33057 			case NEW_BROKER:
33058 				enterOuterAlt(_localctx, 3);
33059 				{
33060 				setState(4634);
33061 				match(NEW_BROKER);
33062 				}
33063 				break;
33064 			case ERROR_BROKER_CONVERSATIONS:
33065 				enterOuterAlt(_localctx, 4);
33066 				{
33067 				setState(4635);
33068 				match(ERROR_BROKER_CONVERSATIONS);
33069 				}
33070 				break;
33071 			case HONOR_BROKER_PRIORITY:
33072 				enterOuterAlt(_localctx, 5);
33073 				{
33074 				setState(4636);
33075 				match(HONOR_BROKER_PRIORITY);
33076 				setState(4637);
33077 				_la = _input.LA(1);
33078 				if ( !(_la==ON || _la==OFF) ) {
33079 				_errHandler.recoverInline(this);
33080 				}
33081 				else {
33082 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33083 					_errHandler.reportMatch(this);
33084 					consume();
33085 				}
33086 				}
33087 				break;
33088 			default:
33089 				throw new NoViableAltException(this);
33090 			}
33091 		}
33092 		catch (RecognitionException re) {
33093 			_localctx.exception = re;
33094 			_errHandler.reportError(this, re);
33095 			_errHandler.recover(this, re);
33096 		}
33097 		finally {
33098 			exitRule();
33099 		}
33100 		return _localctx;
33101 	}
33102 
33103 	public static class TargetRecoveryTimeOptionContext extends ParserRuleContext {
33104 		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(SQLServerStatementParser.TARGET_RECOVERY_TIME, 0); }
33105 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33106 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33107 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
33108 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
33109 		public TargetRecoveryTimeOptionContext(ParserRuleContext parent, int invokingState) {
33110 			super(parent, invokingState);
33111 		}
33112 		@Override public int getRuleIndex() { return RULE_targetRecoveryTimeOption; }
33113 		@Override
33114 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33115 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTargetRecoveryTimeOption(this);
33116 			else return visitor.visitChildren(this);
33117 		}
33118 	}
33119 
33120 	public final TargetRecoveryTimeOptionContext targetRecoveryTimeOption() throws RecognitionException {
33121 		TargetRecoveryTimeOptionContext _localctx = new TargetRecoveryTimeOptionContext(_ctx, getState());
33122 		enterRule(_localctx, 636, RULE_targetRecoveryTimeOption);
33123 		int _la;
33124 		try {
33125 			enterOuterAlt(_localctx, 1);
33126 			{
33127 			setState(4640);
33128 			match(TARGET_RECOVERY_TIME);
33129 			setState(4641);
33130 			match(EQ_);
33131 			setState(4642);
33132 			match(NUMBER_);
33133 			setState(4643);
33134 			_la = _input.LA(1);
33135 			if ( !(_la==MINUTES || _la==SECONDS) ) {
33136 			_errHandler.recoverInline(this);
33137 			}
33138 			else {
33139 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33140 				_errHandler.reportMatch(this);
33141 				consume();
33142 			}
33143 			}
33144 		}
33145 		catch (RecognitionException re) {
33146 			_localctx.exception = re;
33147 			_errHandler.reportError(this, re);
33148 			_errHandler.recover(this, re);
33149 		}
33150 		finally {
33151 			exitRule();
33152 		}
33153 		return _localctx;
33154 	}
33155 
33156 	public static class TerminationContext extends ParserRuleContext {
33157 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
33158 		public TerminalNode AFTER() { return getToken(SQLServerStatementParser.AFTER, 0); }
33159 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
33160 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
33161 		public TerminalNode IMMEDIATE() { return getToken(SQLServerStatementParser.IMMEDIATE, 0); }
33162 		public TerminalNode NO_WAIT() { return getToken(SQLServerStatementParser.NO_WAIT, 0); }
33163 		public TerminationContext(ParserRuleContext parent, int invokingState) {
33164 			super(parent, invokingState);
33165 		}
33166 		@Override public int getRuleIndex() { return RULE_termination; }
33167 		@Override
33168 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33169 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTermination(this);
33170 			else return visitor.visitChildren(this);
33171 		}
33172 	}
33173 
33174 	public final TerminationContext termination() throws RecognitionException {
33175 		TerminationContext _localctx = new TerminationContext(_ctx, getState());
33176 		enterRule(_localctx, 638, RULE_termination);
33177 		int _la;
33178 		try {
33179 			setState(4654);
33180 			_errHandler.sync(this);
33181 			switch ( getInterpreter().adaptivePredict(_input,493,_ctx) ) {
33182 			case 1:
33183 				enterOuterAlt(_localctx, 1);
33184 				{
33185 				setState(4645);
33186 				match(ROLLBACK);
33187 				setState(4646);
33188 				match(AFTER);
33189 				setState(4647);
33190 				match(NUMBER_);
33191 				setState(4649);
33192 				_errHandler.sync(this);
33193 				_la = _input.LA(1);
33194 				if (_la==SECONDS) {
33195 					{
33196 					setState(4648);
33197 					match(SECONDS);
33198 					}
33199 				}
33200 
33201 				}
33202 				break;
33203 			case 2:
33204 				enterOuterAlt(_localctx, 2);
33205 				{
33206 				setState(4651);
33207 				match(ROLLBACK);
33208 				setState(4652);
33209 				match(IMMEDIATE);
33210 				}
33211 				break;
33212 			case 3:
33213 				enterOuterAlt(_localctx, 3);
33214 				{
33215 				setState(4653);
33216 				match(NO_WAIT);
33217 				}
33218 				break;
33219 			}
33220 		}
33221 		catch (RecognitionException re) {
33222 			_localctx.exception = re;
33223 			_errHandler.reportError(this, re);
33224 			_errHandler.recover(this, re);
33225 		}
33226 		finally {
33227 			exitRule();
33228 		}
33229 		return _localctx;
33230 	}
33231 
33232 	public static class CreateServiceClauseContext extends ParserRuleContext {
33233 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33234 		public List<ContractNameContext> contractName() {
33235 			return getRuleContexts(ContractNameContext.class);
33236 		}
33237 		public ContractNameContext contractName(int i) {
33238 			return getRuleContext(ContractNameContext.class,i);
33239 		}
33240 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33241 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33242 		public TerminalNode COMMA_(int i) {
33243 			return getToken(SQLServerStatementParser.COMMA_, i);
33244 		}
33245 		public CreateServiceClauseContext(ParserRuleContext parent, int invokingState) {
33246 			super(parent, invokingState);
33247 		}
33248 		@Override public int getRuleIndex() { return RULE_createServiceClause; }
33249 		@Override
33250 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33251 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateServiceClause(this);
33252 			else return visitor.visitChildren(this);
33253 		}
33254 	}
33255 
33256 	public final CreateServiceClauseContext createServiceClause() throws RecognitionException {
33257 		CreateServiceClauseContext _localctx = new CreateServiceClauseContext(_ctx, getState());
33258 		enterRule(_localctx, 640, RULE_createServiceClause);
33259 		int _la;
33260 		try {
33261 			enterOuterAlt(_localctx, 1);
33262 			{
33263 			setState(4656);
33264 			match(LP_);
33265 			setState(4657);
33266 			contractName();
33267 			setState(4662);
33268 			_errHandler.sync(this);
33269 			_la = _input.LA(1);
33270 			while (_la==COMMA_) {
33271 				{
33272 				{
33273 				setState(4658);
33274 				match(COMMA_);
33275 				setState(4659);
33276 				contractName();
33277 				}
33278 				}
33279 				setState(4664);
33280 				_errHandler.sync(this);
33281 				_la = _input.LA(1);
33282 			}
33283 			setState(4665);
33284 			match(RP_);
33285 			}
33286 		}
33287 		catch (RecognitionException re) {
33288 			_localctx.exception = re;
33289 			_errHandler.reportError(this, re);
33290 			_errHandler.recover(this, re);
33291 		}
33292 		finally {
33293 			exitRule();
33294 		}
33295 		return _localctx;
33296 	}
33297 
33298 	public static class AlterServiceClauseContext extends ParserRuleContext {
33299 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33300 		public List<AlterServiceOptArgContext> alterServiceOptArg() {
33301 			return getRuleContexts(AlterServiceOptArgContext.class);
33302 		}
33303 		public AlterServiceOptArgContext alterServiceOptArg(int i) {
33304 			return getRuleContext(AlterServiceOptArgContext.class,i);
33305 		}
33306 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33307 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33308 		public TerminalNode COMMA_(int i) {
33309 			return getToken(SQLServerStatementParser.COMMA_, i);
33310 		}
33311 		public AlterServiceClauseContext(ParserRuleContext parent, int invokingState) {
33312 			super(parent, invokingState);
33313 		}
33314 		@Override public int getRuleIndex() { return RULE_alterServiceClause; }
33315 		@Override
33316 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33317 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterServiceClause(this);
33318 			else return visitor.visitChildren(this);
33319 		}
33320 	}
33321 
33322 	public final AlterServiceClauseContext alterServiceClause() throws RecognitionException {
33323 		AlterServiceClauseContext _localctx = new AlterServiceClauseContext(_ctx, getState());
33324 		enterRule(_localctx, 642, RULE_alterServiceClause);
33325 		int _la;
33326 		try {
33327 			enterOuterAlt(_localctx, 1);
33328 			{
33329 			setState(4667);
33330 			match(LP_);
33331 			setState(4668);
33332 			alterServiceOptArg();
33333 			setState(4673);
33334 			_errHandler.sync(this);
33335 			_la = _input.LA(1);
33336 			while (_la==COMMA_) {
33337 				{
33338 				{
33339 				setState(4669);
33340 				match(COMMA_);
33341 				setState(4670);
33342 				alterServiceOptArg();
33343 				}
33344 				}
33345 				setState(4675);
33346 				_errHandler.sync(this);
33347 				_la = _input.LA(1);
33348 			}
33349 			setState(4676);
33350 			match(RP_);
33351 			}
33352 		}
33353 		catch (RecognitionException re) {
33354 			_localctx.exception = re;
33355 			_errHandler.reportError(this, re);
33356 			_errHandler.recover(this, re);
33357 		}
33358 		finally {
33359 			exitRule();
33360 		}
33361 		return _localctx;
33362 	}
33363 
33364 	public static class AlterServiceOptArgContext extends ParserRuleContext {
33365 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
33366 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
33367 		public ContractNameContext contractName() {
33368 			return getRuleContext(ContractNameContext.class,0);
33369 		}
33370 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
33371 		public AlterServiceOptArgContext(ParserRuleContext parent, int invokingState) {
33372 			super(parent, invokingState);
33373 		}
33374 		@Override public int getRuleIndex() { return RULE_alterServiceOptArg; }
33375 		@Override
33376 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33377 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterServiceOptArg(this);
33378 			else return visitor.visitChildren(this);
33379 		}
33380 	}
33381 
33382 	public final AlterServiceOptArgContext alterServiceOptArg() throws RecognitionException {
33383 		AlterServiceOptArgContext _localctx = new AlterServiceOptArgContext(_ctx, getState());
33384 		enterRule(_localctx, 644, RULE_alterServiceOptArg);
33385 		try {
33386 			setState(4684);
33387 			_errHandler.sync(this);
33388 			switch (_input.LA(1)) {
33389 			case ADD:
33390 				enterOuterAlt(_localctx, 1);
33391 				{
33392 				setState(4678);
33393 				match(ADD);
33394 				setState(4679);
33395 				match(CONTRACT);
33396 				setState(4680);
33397 				contractName();
33398 				}
33399 				break;
33400 			case DROP:
33401 				enterOuterAlt(_localctx, 2);
33402 				{
33403 				setState(4681);
33404 				match(DROP);
33405 				setState(4682);
33406 				match(CONTRACT);
33407 				setState(4683);
33408 				contractName();
33409 				}
33410 				break;
33411 			default:
33412 				throw new NoViableAltException(this);
33413 			}
33414 		}
33415 		catch (RecognitionException re) {
33416 			_localctx.exception = re;
33417 			_errHandler.reportError(this, re);
33418 			_errHandler.recover(this, re);
33419 		}
33420 		finally {
33421 			exitRule();
33422 		}
33423 		return _localctx;
33424 	}
33425 
33426 	public static class SchemaNameClauseContext extends ParserRuleContext {
33427 		public SchemaNameContext schemaName() {
33428 			return getRuleContext(SchemaNameContext.class,0);
33429 		}
33430 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
33431 		public IgnoredIdentifierContext ignoredIdentifier() {
33432 			return getRuleContext(IgnoredIdentifierContext.class,0);
33433 		}
33434 		public SchemaNameClauseContext(ParserRuleContext parent, int invokingState) {
33435 			super(parent, invokingState);
33436 		}
33437 		@Override public int getRuleIndex() { return RULE_schemaNameClause; }
33438 		@Override
33439 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33440 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaNameClause(this);
33441 			else return visitor.visitChildren(this);
33442 		}
33443 	}
33444 
33445 	public final SchemaNameClauseContext schemaNameClause() throws RecognitionException {
33446 		SchemaNameClauseContext _localctx = new SchemaNameClauseContext(_ctx, getState());
33447 		enterRule(_localctx, 646, RULE_schemaNameClause);
33448 		try {
33449 			setState(4693);
33450 			_errHandler.sync(this);
33451 			switch ( getInterpreter().adaptivePredict(_input,497,_ctx) ) {
33452 			case 1:
33453 				enterOuterAlt(_localctx, 1);
33454 				{
33455 				setState(4686);
33456 				schemaName();
33457 				}
33458 				break;
33459 			case 2:
33460 				enterOuterAlt(_localctx, 2);
33461 				{
33462 				setState(4687);
33463 				match(AUTHORIZATION);
33464 				setState(4688);
33465 				ignoredIdentifier();
33466 				}
33467 				break;
33468 			case 3:
33469 				enterOuterAlt(_localctx, 3);
33470 				{
33471 				setState(4689);
33472 				schemaName();
33473 				setState(4690);
33474 				match(AUTHORIZATION);
33475 				setState(4691);
33476 				ignoredIdentifier();
33477 				}
33478 				break;
33479 			}
33480 		}
33481 		catch (RecognitionException re) {
33482 			_localctx.exception = re;
33483 			_errHandler.reportError(this, re);
33484 			_errHandler.recover(this, re);
33485 		}
33486 		finally {
33487 			exitRule();
33488 		}
33489 		return _localctx;
33490 	}
33491 
33492 	public static class SchemaElementContext extends ParserRuleContext {
33493 		public CreateTableContext createTable() {
33494 			return getRuleContext(CreateTableContext.class,0);
33495 		}
33496 		public CreateViewContext createView() {
33497 			return getRuleContext(CreateViewContext.class,0);
33498 		}
33499 		public GrantContext grant() {
33500 			return getRuleContext(GrantContext.class,0);
33501 		}
33502 		public RevokeContext revoke() {
33503 			return getRuleContext(RevokeContext.class,0);
33504 		}
33505 		public DenyContext deny() {
33506 			return getRuleContext(DenyContext.class,0);
33507 		}
33508 		public SchemaElementContext(ParserRuleContext parent, int invokingState) {
33509 			super(parent, invokingState);
33510 		}
33511 		@Override public int getRuleIndex() { return RULE_schemaElement; }
33512 		@Override
33513 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33514 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaElement(this);
33515 			else return visitor.visitChildren(this);
33516 		}
33517 	}
33518 
33519 	public final SchemaElementContext schemaElement() throws RecognitionException {
33520 		SchemaElementContext _localctx = new SchemaElementContext(_ctx, getState());
33521 		enterRule(_localctx, 648, RULE_schemaElement);
33522 		try {
33523 			setState(4700);
33524 			_errHandler.sync(this);
33525 			switch ( getInterpreter().adaptivePredict(_input,498,_ctx) ) {
33526 			case 1:
33527 				enterOuterAlt(_localctx, 1);
33528 				{
33529 				setState(4695);
33530 				createTable();
33531 				}
33532 				break;
33533 			case 2:
33534 				enterOuterAlt(_localctx, 2);
33535 				{
33536 				setState(4696);
33537 				createView();
33538 				}
33539 				break;
33540 			case 3:
33541 				enterOuterAlt(_localctx, 3);
33542 				{
33543 				setState(4697);
33544 				grant();
33545 				}
33546 				break;
33547 			case 4:
33548 				enterOuterAlt(_localctx, 4);
33549 				{
33550 				setState(4698);
33551 				revoke();
33552 				}
33553 				break;
33554 			case 5:
33555 				enterOuterAlt(_localctx, 5);
33556 				{
33557 				setState(4699);
33558 				deny();
33559 				}
33560 				break;
33561 			}
33562 		}
33563 		catch (RecognitionException re) {
33564 			_localctx.exception = re;
33565 			_errHandler.reportError(this, re);
33566 			_errHandler.recover(this, re);
33567 		}
33568 		finally {
33569 			exitRule();
33570 		}
33571 		return _localctx;
33572 	}
33573 
33574 	public static class CreateTableAsSelectClauseContext extends ParserRuleContext {
33575 		public CreateTableAsSelectContext createTableAsSelect() {
33576 			return getRuleContext(CreateTableAsSelectContext.class,0);
33577 		}
33578 		public CreateRemoteTableAsSelectContext createRemoteTableAsSelect() {
33579 			return getRuleContext(CreateRemoteTableAsSelectContext.class,0);
33580 		}
33581 		public CreateTableAsSelectClauseContext(ParserRuleContext parent, int invokingState) {
33582 			super(parent, invokingState);
33583 		}
33584 		@Override public int getRuleIndex() { return RULE_createTableAsSelectClause; }
33585 		@Override
33586 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33587 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableAsSelectClause(this);
33588 			else return visitor.visitChildren(this);
33589 		}
33590 	}
33591 
33592 	public final CreateTableAsSelectClauseContext createTableAsSelectClause() throws RecognitionException {
33593 		CreateTableAsSelectClauseContext _localctx = new CreateTableAsSelectClauseContext(_ctx, getState());
33594 		enterRule(_localctx, 650, RULE_createTableAsSelectClause);
33595 		try {
33596 			setState(4704);
33597 			_errHandler.sync(this);
33598 			switch ( getInterpreter().adaptivePredict(_input,499,_ctx) ) {
33599 			case 1:
33600 				enterOuterAlt(_localctx, 1);
33601 				{
33602 				setState(4702);
33603 				createTableAsSelect();
33604 				}
33605 				break;
33606 			case 2:
33607 				enterOuterAlt(_localctx, 2);
33608 				{
33609 				setState(4703);
33610 				createRemoteTableAsSelect();
33611 				}
33612 				break;
33613 			}
33614 		}
33615 		catch (RecognitionException re) {
33616 			_localctx.exception = re;
33617 			_errHandler.reportError(this, re);
33618 			_errHandler.recover(this, re);
33619 		}
33620 		finally {
33621 			exitRule();
33622 		}
33623 		return _localctx;
33624 	}
33625 
33626 	public static class CreateTableAsSelectContext extends ParserRuleContext {
33627 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
33628 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
33629 		public TableNameContext tableName() {
33630 			return getRuleContext(TableNameContext.class,0);
33631 		}
33632 		public WithDistributionOptionContext withDistributionOption() {
33633 			return getRuleContext(WithDistributionOptionContext.class,0);
33634 		}
33635 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
33636 		public SelectContext select() {
33637 			return getRuleContext(SelectContext.class,0);
33638 		}
33639 		public OptionQueryHintClauseContext optionQueryHintClause() {
33640 			return getRuleContext(OptionQueryHintClauseContext.class,0);
33641 		}
33642 		public ColumnNamesContext columnNames() {
33643 			return getRuleContext(ColumnNamesContext.class,0);
33644 		}
33645 		public CreateTableAsSelectContext(ParserRuleContext parent, int invokingState) {
33646 			super(parent, invokingState);
33647 		}
33648 		@Override public int getRuleIndex() { return RULE_createTableAsSelect; }
33649 		@Override
33650 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33651 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableAsSelect(this);
33652 			else return visitor.visitChildren(this);
33653 		}
33654 	}
33655 
33656 	public final CreateTableAsSelectContext createTableAsSelect() throws RecognitionException {
33657 		CreateTableAsSelectContext _localctx = new CreateTableAsSelectContext(_ctx, getState());
33658 		enterRule(_localctx, 652, RULE_createTableAsSelect);
33659 		int _la;
33660 		try {
33661 			enterOuterAlt(_localctx, 1);
33662 			{
33663 			setState(4706);
33664 			match(CREATE);
33665 			setState(4707);
33666 			match(TABLE);
33667 			setState(4708);
33668 			tableName();
33669 			setState(4710);
33670 			_errHandler.sync(this);
33671 			_la = _input.LA(1);
33672 			if (_la==LP_) {
33673 				{
33674 				setState(4709);
33675 				columnNames();
33676 				}
33677 			}
33678 
33679 			setState(4712);
33680 			withDistributionOption();
33681 			setState(4713);
33682 			match(AS);
33683 			setState(4714);
33684 			select();
33685 			setState(4715);
33686 			optionQueryHintClause();
33687 			}
33688 		}
33689 		catch (RecognitionException re) {
33690 			_localctx.exception = re;
33691 			_errHandler.reportError(this, re);
33692 			_errHandler.recover(this, re);
33693 		}
33694 		finally {
33695 			exitRule();
33696 		}
33697 		return _localctx;
33698 	}
33699 
33700 	public static class CreateRemoteTableAsSelectContext extends ParserRuleContext {
33701 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
33702 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
33703 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
33704 		public TableNameContext tableName() {
33705 			return getRuleContext(TableNameContext.class,0);
33706 		}
33707 		public TerminalNode AT() { return getToken(SQLServerStatementParser.AT, 0); }
33708 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
33709 		public TerminalNode LP_(int i) {
33710 			return getToken(SQLServerStatementParser.LP_, i);
33711 		}
33712 		public StringLiteralsContext stringLiterals() {
33713 			return getRuleContext(StringLiteralsContext.class,0);
33714 		}
33715 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
33716 		public TerminalNode RP_(int i) {
33717 			return getToken(SQLServerStatementParser.RP_, i);
33718 		}
33719 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
33720 		public SelectContext select() {
33721 			return getRuleContext(SelectContext.class,0);
33722 		}
33723 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
33724 		public TerminalNode BATCH_SIZE() { return getToken(SQLServerStatementParser.BATCH_SIZE, 0); }
33725 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33726 		public TerminalNode INT_NUM_() { return getToken(SQLServerStatementParser.INT_NUM_, 0); }
33727 		public CreateRemoteTableAsSelectContext(ParserRuleContext parent, int invokingState) {
33728 			super(parent, invokingState);
33729 		}
33730 		@Override public int getRuleIndex() { return RULE_createRemoteTableAsSelect; }
33731 		@Override
33732 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33733 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateRemoteTableAsSelect(this);
33734 			else return visitor.visitChildren(this);
33735 		}
33736 	}
33737 
33738 	public final CreateRemoteTableAsSelectContext createRemoteTableAsSelect() throws RecognitionException {
33739 		CreateRemoteTableAsSelectContext _localctx = new CreateRemoteTableAsSelectContext(_ctx, getState());
33740 		enterRule(_localctx, 654, RULE_createRemoteTableAsSelect);
33741 		int _la;
33742 		try {
33743 			enterOuterAlt(_localctx, 1);
33744 			{
33745 			setState(4717);
33746 			match(CREATE);
33747 			setState(4718);
33748 			match(REMOTE);
33749 			setState(4719);
33750 			match(TABLE);
33751 			setState(4720);
33752 			tableName();
33753 			setState(4721);
33754 			match(AT);
33755 			setState(4722);
33756 			match(LP_);
33757 			setState(4723);
33758 			stringLiterals();
33759 			setState(4724);
33760 			match(RP_);
33761 			setState(4731);
33762 			_errHandler.sync(this);
33763 			_la = _input.LA(1);
33764 			if (_la==WITH) {
33765 				{
33766 				setState(4725);
33767 				match(WITH);
33768 				setState(4726);
33769 				match(LP_);
33770 				setState(4727);
33771 				match(BATCH_SIZE);
33772 				setState(4728);
33773 				match(EQ_);
33774 				setState(4729);
33775 				match(INT_NUM_);
33776 				setState(4730);
33777 				match(RP_);
33778 				}
33779 			}
33780 
33781 			setState(4733);
33782 			match(AS);
33783 			setState(4734);
33784 			select();
33785 			}
33786 		}
33787 		catch (RecognitionException re) {
33788 			_localctx.exception = re;
33789 			_errHandler.reportError(this, re);
33790 			_errHandler.recover(this, re);
33791 		}
33792 		finally {
33793 			exitRule();
33794 		}
33795 		return _localctx;
33796 	}
33797 
33798 	public static class WithDistributionOptionContext extends ParserRuleContext {
33799 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
33800 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33801 		public DistributionOptionContext distributionOption() {
33802 			return getRuleContext(DistributionOptionContext.class,0);
33803 		}
33804 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33805 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33806 		public TerminalNode COMMA_(int i) {
33807 			return getToken(SQLServerStatementParser.COMMA_, i);
33808 		}
33809 		public List<TableOptionContext> tableOption() {
33810 			return getRuleContexts(TableOptionContext.class);
33811 		}
33812 		public TableOptionContext tableOption(int i) {
33813 			return getRuleContext(TableOptionContext.class,i);
33814 		}
33815 		public WithDistributionOptionContext(ParserRuleContext parent, int invokingState) {
33816 			super(parent, invokingState);
33817 		}
33818 		@Override public int getRuleIndex() { return RULE_withDistributionOption; }
33819 		@Override
33820 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33821 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithDistributionOption(this);
33822 			else return visitor.visitChildren(this);
33823 		}
33824 	}
33825 
33826 	public final WithDistributionOptionContext withDistributionOption() throws RecognitionException {
33827 		WithDistributionOptionContext _localctx = new WithDistributionOptionContext(_ctx, getState());
33828 		enterRule(_localctx, 656, RULE_withDistributionOption);
33829 		int _la;
33830 		try {
33831 			enterOuterAlt(_localctx, 1);
33832 			{
33833 			setState(4736);
33834 			match(WITH);
33835 			setState(4737);
33836 			match(LP_);
33837 			setState(4738);
33838 			distributionOption();
33839 			setState(4748);
33840 			_errHandler.sync(this);
33841 			_la = _input.LA(1);
33842 			if (_la==COMMA_) {
33843 				{
33844 				setState(4739);
33845 				match(COMMA_);
33846 				setState(4740);
33847 				tableOption();
33848 				setState(4745);
33849 				_errHandler.sync(this);
33850 				_la = _input.LA(1);
33851 				while (_la==COMMA_) {
33852 					{
33853 					{
33854 					setState(4741);
33855 					match(COMMA_);
33856 					setState(4742);
33857 					tableOption();
33858 					}
33859 					}
33860 					setState(4747);
33861 					_errHandler.sync(this);
33862 					_la = _input.LA(1);
33863 				}
33864 				}
33865 			}
33866 
33867 			setState(4750);
33868 			match(RP_);
33869 			}
33870 		}
33871 		catch (RecognitionException re) {
33872 			_localctx.exception = re;
33873 			_errHandler.reportError(this, re);
33874 			_errHandler.recover(this, re);
33875 		}
33876 		finally {
33877 			exitRule();
33878 		}
33879 		return _localctx;
33880 	}
33881 
33882 	public static class OptionQueryHintClauseContext extends ParserRuleContext {
33883 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
33884 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33885 		public List<QueryHintContext> queryHint() {
33886 			return getRuleContexts(QueryHintContext.class);
33887 		}
33888 		public QueryHintContext queryHint(int i) {
33889 			return getRuleContext(QueryHintContext.class,i);
33890 		}
33891 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33892 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33893 		public TerminalNode COMMA_(int i) {
33894 			return getToken(SQLServerStatementParser.COMMA_, i);
33895 		}
33896 		public OptionQueryHintClauseContext(ParserRuleContext parent, int invokingState) {
33897 			super(parent, invokingState);
33898 		}
33899 		@Override public int getRuleIndex() { return RULE_optionQueryHintClause; }
33900 		@Override
33901 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33902 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionQueryHintClause(this);
33903 			else return visitor.visitChildren(this);
33904 		}
33905 	}
33906 
33907 	public final OptionQueryHintClauseContext optionQueryHintClause() throws RecognitionException {
33908 		OptionQueryHintClauseContext _localctx = new OptionQueryHintClauseContext(_ctx, getState());
33909 		enterRule(_localctx, 658, RULE_optionQueryHintClause);
33910 		int _la;
33911 		try {
33912 			enterOuterAlt(_localctx, 1);
33913 			{
33914 			setState(4764);
33915 			_errHandler.sync(this);
33916 			_la = _input.LA(1);
33917 			if (_la==OPTION) {
33918 				{
33919 				setState(4752);
33920 				match(OPTION);
33921 				setState(4753);
33922 				match(LP_);
33923 				setState(4754);
33924 				queryHint();
33925 				setState(4759);
33926 				_errHandler.sync(this);
33927 				_la = _input.LA(1);
33928 				while (_la==COMMA_) {
33929 					{
33930 					{
33931 					setState(4755);
33932 					match(COMMA_);
33933 					setState(4756);
33934 					queryHint();
33935 					}
33936 					}
33937 					setState(4761);
33938 					_errHandler.sync(this);
33939 					_la = _input.LA(1);
33940 				}
33941 				setState(4762);
33942 				match(RP_);
33943 				}
33944 			}
33945 
33946 			}
33947 		}
33948 		catch (RecognitionException re) {
33949 			_localctx.exception = re;
33950 			_errHandler.reportError(this, re);
33951 			_errHandler.recover(this, re);
33952 		}
33953 		finally {
33954 			exitRule();
33955 		}
33956 		return _localctx;
33957 	}
33958 
33959 	public static class InsertContext extends ParserRuleContext {
33960 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
33961 		public TableNameContext tableName() {
33962 			return getRuleContext(TableNameContext.class,0);
33963 		}
33964 		public InsertDefaultValueContext insertDefaultValue() {
33965 			return getRuleContext(InsertDefaultValueContext.class,0);
33966 		}
33967 		public InsertValuesClauseContext insertValuesClause() {
33968 			return getRuleContext(InsertValuesClauseContext.class,0);
33969 		}
33970 		public InsertSelectClauseContext insertSelectClause() {
33971 			return getRuleContext(InsertSelectClauseContext.class,0);
33972 		}
33973 		public WithClauseContext withClause() {
33974 			return getRuleContext(WithClauseContext.class,0);
33975 		}
33976 		public TopContext top() {
33977 			return getRuleContext(TopContext.class,0);
33978 		}
33979 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
33980 		public AliasContext alias() {
33981 			return getRuleContext(AliasContext.class,0);
33982 		}
33983 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
33984 		public InsertContext(ParserRuleContext parent, int invokingState) {
33985 			super(parent, invokingState);
33986 		}
33987 		@Override public int getRuleIndex() { return RULE_insert; }
33988 		@Override
33989 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33990 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsert(this);
33991 			else return visitor.visitChildren(this);
33992 		}
33993 	}
33994 
33995 	public final InsertContext insert() throws RecognitionException {
33996 		InsertContext _localctx = new InsertContext(_ctx, getState());
33997 		enterRule(_localctx, 660, RULE_insert);
33998 		int _la;
33999 		try {
34000 			enterOuterAlt(_localctx, 1);
34001 			{
34002 			setState(4767);
34003 			_errHandler.sync(this);
34004 			_la = _input.LA(1);
34005 			if (_la==WITH) {
34006 				{
34007 				setState(4766);
34008 				withClause();
34009 				}
34010 			}
34011 
34012 			setState(4769);
34013 			match(INSERT);
34014 			setState(4771);
34015 			_errHandler.sync(this);
34016 			switch ( getInterpreter().adaptivePredict(_input,507,_ctx) ) {
34017 			case 1:
34018 				{
34019 				setState(4770);
34020 				top();
34021 				}
34022 				break;
34023 			}
34024 			setState(4774);
34025 			_errHandler.sync(this);
34026 			_la = _input.LA(1);
34027 			if (_la==INTO) {
34028 				{
34029 				setState(4773);
34030 				match(INTO);
34031 				}
34032 			}
34033 
34034 			setState(4776);
34035 			tableName();
34036 			setState(4781);
34037 			_errHandler.sync(this);
34038 			switch ( getInterpreter().adaptivePredict(_input,510,_ctx) ) {
34039 			case 1:
34040 				{
34041 				setState(4778);
34042 				_errHandler.sync(this);
34043 				_la = _input.LA(1);
34044 				if (_la==AS) {
34045 					{
34046 					setState(4777);
34047 					match(AS);
34048 					}
34049 				}
34050 
34051 				setState(4780);
34052 				alias();
34053 				}
34054 				break;
34055 			}
34056 			setState(4786);
34057 			_errHandler.sync(this);
34058 			switch ( getInterpreter().adaptivePredict(_input,511,_ctx) ) {
34059 			case 1:
34060 				{
34061 				setState(4783);
34062 				insertDefaultValue();
34063 				}
34064 				break;
34065 			case 2:
34066 				{
34067 				setState(4784);
34068 				insertValuesClause();
34069 				}
34070 				break;
34071 			case 3:
34072 				{
34073 				setState(4785);
34074 				insertSelectClause();
34075 				}
34076 				break;
34077 			}
34078 			}
34079 		}
34080 		catch (RecognitionException re) {
34081 			_localctx.exception = re;
34082 			_errHandler.reportError(this, re);
34083 			_errHandler.recover(this, re);
34084 		}
34085 		finally {
34086 			exitRule();
34087 		}
34088 		return _localctx;
34089 	}
34090 
34091 	public static class InsertDefaultValueContext extends ParserRuleContext {
34092 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
34093 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
34094 		public ColumnNamesContext columnNames() {
34095 			return getRuleContext(ColumnNamesContext.class,0);
34096 		}
34097 		public OutputClauseContext outputClause() {
34098 			return getRuleContext(OutputClauseContext.class,0);
34099 		}
34100 		public InsertDefaultValueContext(ParserRuleContext parent, int invokingState) {
34101 			super(parent, invokingState);
34102 		}
34103 		@Override public int getRuleIndex() { return RULE_insertDefaultValue; }
34104 		@Override
34105 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34106 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertDefaultValue(this);
34107 			else return visitor.visitChildren(this);
34108 		}
34109 	}
34110 
34111 	public final InsertDefaultValueContext insertDefaultValue() throws RecognitionException {
34112 		InsertDefaultValueContext _localctx = new InsertDefaultValueContext(_ctx, getState());
34113 		enterRule(_localctx, 662, RULE_insertDefaultValue);
34114 		int _la;
34115 		try {
34116 			enterOuterAlt(_localctx, 1);
34117 			{
34118 			setState(4789);
34119 			_errHandler.sync(this);
34120 			_la = _input.LA(1);
34121 			if (_la==LP_) {
34122 				{
34123 				setState(4788);
34124 				columnNames();
34125 				}
34126 			}
34127 
34128 			setState(4792);
34129 			_errHandler.sync(this);
34130 			_la = _input.LA(1);
34131 			if (_la==OUTPUT) {
34132 				{
34133 				setState(4791);
34134 				outputClause();
34135 				}
34136 			}
34137 
34138 			setState(4794);
34139 			match(DEFAULT);
34140 			setState(4795);
34141 			match(VALUES);
34142 			}
34143 		}
34144 		catch (RecognitionException re) {
34145 			_localctx.exception = re;
34146 			_errHandler.reportError(this, re);
34147 			_errHandler.recover(this, re);
34148 		}
34149 		finally {
34150 			exitRule();
34151 		}
34152 		return _localctx;
34153 	}
34154 
34155 	public static class InsertValuesClauseContext extends ParserRuleContext {
34156 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
34157 		public List<AssignmentValuesContext> assignmentValues() {
34158 			return getRuleContexts(AssignmentValuesContext.class);
34159 		}
34160 		public AssignmentValuesContext assignmentValues(int i) {
34161 			return getRuleContext(AssignmentValuesContext.class,i);
34162 		}
34163 		public ColumnNamesContext columnNames() {
34164 			return getRuleContext(ColumnNamesContext.class,0);
34165 		}
34166 		public OutputClauseContext outputClause() {
34167 			return getRuleContext(OutputClauseContext.class,0);
34168 		}
34169 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34170 		public TerminalNode COMMA_(int i) {
34171 			return getToken(SQLServerStatementParser.COMMA_, i);
34172 		}
34173 		public InsertValuesClauseContext(ParserRuleContext parent, int invokingState) {
34174 			super(parent, invokingState);
34175 		}
34176 		@Override public int getRuleIndex() { return RULE_insertValuesClause; }
34177 		@Override
34178 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34179 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertValuesClause(this);
34180 			else return visitor.visitChildren(this);
34181 		}
34182 	}
34183 
34184 	public final InsertValuesClauseContext insertValuesClause() throws RecognitionException {
34185 		InsertValuesClauseContext _localctx = new InsertValuesClauseContext(_ctx, getState());
34186 		enterRule(_localctx, 664, RULE_insertValuesClause);
34187 		int _la;
34188 		try {
34189 			enterOuterAlt(_localctx, 1);
34190 			{
34191 			setState(4798);
34192 			_errHandler.sync(this);
34193 			_la = _input.LA(1);
34194 			if (_la==LP_) {
34195 				{
34196 				setState(4797);
34197 				columnNames();
34198 				}
34199 			}
34200 
34201 			setState(4801);
34202 			_errHandler.sync(this);
34203 			_la = _input.LA(1);
34204 			if (_la==OUTPUT) {
34205 				{
34206 				setState(4800);
34207 				outputClause();
34208 				}
34209 			}
34210 
34211 			setState(4803);
34212 			match(VALUES);
34213 			setState(4804);
34214 			assignmentValues();
34215 			setState(4809);
34216 			_errHandler.sync(this);
34217 			_la = _input.LA(1);
34218 			while (_la==COMMA_) {
34219 				{
34220 				{
34221 				setState(4805);
34222 				match(COMMA_);
34223 				setState(4806);
34224 				assignmentValues();
34225 				}
34226 				}
34227 				setState(4811);
34228 				_errHandler.sync(this);
34229 				_la = _input.LA(1);
34230 			}
34231 			}
34232 		}
34233 		catch (RecognitionException re) {
34234 			_localctx.exception = re;
34235 			_errHandler.reportError(this, re);
34236 			_errHandler.recover(this, re);
34237 		}
34238 		finally {
34239 			exitRule();
34240 		}
34241 		return _localctx;
34242 	}
34243 
34244 	public static class InsertSelectClauseContext extends ParserRuleContext {
34245 		public SelectContext select() {
34246 			return getRuleContext(SelectContext.class,0);
34247 		}
34248 		public ColumnNamesContext columnNames() {
34249 			return getRuleContext(ColumnNamesContext.class,0);
34250 		}
34251 		public OutputClauseContext outputClause() {
34252 			return getRuleContext(OutputClauseContext.class,0);
34253 		}
34254 		public InsertSelectClauseContext(ParserRuleContext parent, int invokingState) {
34255 			super(parent, invokingState);
34256 		}
34257 		@Override public int getRuleIndex() { return RULE_insertSelectClause; }
34258 		@Override
34259 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34260 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertSelectClause(this);
34261 			else return visitor.visitChildren(this);
34262 		}
34263 	}
34264 
34265 	public final InsertSelectClauseContext insertSelectClause() throws RecognitionException {
34266 		InsertSelectClauseContext _localctx = new InsertSelectClauseContext(_ctx, getState());
34267 		enterRule(_localctx, 666, RULE_insertSelectClause);
34268 		int _la;
34269 		try {
34270 			enterOuterAlt(_localctx, 1);
34271 			{
34272 			setState(4813);
34273 			_errHandler.sync(this);
34274 			_la = _input.LA(1);
34275 			if (_la==LP_) {
34276 				{
34277 				setState(4812);
34278 				columnNames();
34279 				}
34280 			}
34281 
34282 			setState(4816);
34283 			_errHandler.sync(this);
34284 			_la = _input.LA(1);
34285 			if (_la==OUTPUT) {
34286 				{
34287 				setState(4815);
34288 				outputClause();
34289 				}
34290 			}
34291 
34292 			setState(4818);
34293 			select();
34294 			}
34295 		}
34296 		catch (RecognitionException re) {
34297 			_localctx.exception = re;
34298 			_errHandler.reportError(this, re);
34299 			_errHandler.recover(this, re);
34300 		}
34301 		finally {
34302 			exitRule();
34303 		}
34304 		return _localctx;
34305 	}
34306 
34307 	public static class UpdateContext extends ParserRuleContext {
34308 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
34309 		public TableReferencesContext tableReferences() {
34310 			return getRuleContext(TableReferencesContext.class,0);
34311 		}
34312 		public SetAssignmentsClauseContext setAssignmentsClause() {
34313 			return getRuleContext(SetAssignmentsClauseContext.class,0);
34314 		}
34315 		public WithClauseContext withClause() {
34316 			return getRuleContext(WithClauseContext.class,0);
34317 		}
34318 		public TopContext top() {
34319 			return getRuleContext(TopContext.class,0);
34320 		}
34321 		public WhereClauseContext whereClause() {
34322 			return getRuleContext(WhereClauseContext.class,0);
34323 		}
34324 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
34325 		public QueryHintContext queryHint() {
34326 			return getRuleContext(QueryHintContext.class,0);
34327 		}
34328 		public UpdateContext(ParserRuleContext parent, int invokingState) {
34329 			super(parent, invokingState);
34330 		}
34331 		@Override public int getRuleIndex() { return RULE_update; }
34332 		@Override
34333 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34334 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUpdate(this);
34335 			else return visitor.visitChildren(this);
34336 		}
34337 	}
34338 
34339 	public final UpdateContext update() throws RecognitionException {
34340 		UpdateContext _localctx = new UpdateContext(_ctx, getState());
34341 		enterRule(_localctx, 668, RULE_update);
34342 		int _la;
34343 		try {
34344 			enterOuterAlt(_localctx, 1);
34345 			{
34346 			setState(4821);
34347 			_errHandler.sync(this);
34348 			_la = _input.LA(1);
34349 			if (_la==WITH) {
34350 				{
34351 				setState(4820);
34352 				withClause();
34353 				}
34354 			}
34355 
34356 			setState(4823);
34357 			match(UPDATE);
34358 			setState(4825);
34359 			_errHandler.sync(this);
34360 			switch ( getInterpreter().adaptivePredict(_input,520,_ctx) ) {
34361 			case 1:
34362 				{
34363 				setState(4824);
34364 				top();
34365 				}
34366 				break;
34367 			}
34368 			setState(4827);
34369 			tableReferences();
34370 			setState(4828);
34371 			setAssignmentsClause();
34372 			setState(4830);
34373 			_errHandler.sync(this);
34374 			_la = _input.LA(1);
34375 			if (_la==WHERE) {
34376 				{
34377 				setState(4829);
34378 				whereClause();
34379 				}
34380 			}
34381 
34382 			setState(4834);
34383 			_errHandler.sync(this);
34384 			_la = _input.LA(1);
34385 			if (_la==OPTION) {
34386 				{
34387 				setState(4832);
34388 				match(OPTION);
34389 				setState(4833);
34390 				queryHint();
34391 				}
34392 			}
34393 
34394 			}
34395 		}
34396 		catch (RecognitionException re) {
34397 			_localctx.exception = re;
34398 			_errHandler.reportError(this, re);
34399 			_errHandler.recover(this, re);
34400 		}
34401 		finally {
34402 			exitRule();
34403 		}
34404 		return _localctx;
34405 	}
34406 
34407 	public static class AssignmentContext extends ParserRuleContext {
34408 		public ColumnNameContext columnName() {
34409 			return getRuleContext(ColumnNameContext.class,0);
34410 		}
34411 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34412 		public AssignmentValueContext assignmentValue() {
34413 			return getRuleContext(AssignmentValueContext.class,0);
34414 		}
34415 		public AssignmentContext(ParserRuleContext parent, int invokingState) {
34416 			super(parent, invokingState);
34417 		}
34418 		@Override public int getRuleIndex() { return RULE_assignment; }
34419 		@Override
34420 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34421 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignment(this);
34422 			else return visitor.visitChildren(this);
34423 		}
34424 	}
34425 
34426 	public final AssignmentContext assignment() throws RecognitionException {
34427 		AssignmentContext _localctx = new AssignmentContext(_ctx, getState());
34428 		enterRule(_localctx, 670, RULE_assignment);
34429 		try {
34430 			enterOuterAlt(_localctx, 1);
34431 			{
34432 			setState(4836);
34433 			columnName();
34434 			setState(4837);
34435 			match(EQ_);
34436 			setState(4838);
34437 			assignmentValue();
34438 			}
34439 		}
34440 		catch (RecognitionException re) {
34441 			_localctx.exception = re;
34442 			_errHandler.reportError(this, re);
34443 			_errHandler.recover(this, re);
34444 		}
34445 		finally {
34446 			exitRule();
34447 		}
34448 		return _localctx;
34449 	}
34450 
34451 	public static class SetAssignmentsClauseContext extends ParserRuleContext {
34452 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
34453 		public List<AssignmentContext> assignment() {
34454 			return getRuleContexts(AssignmentContext.class);
34455 		}
34456 		public AssignmentContext assignment(int i) {
34457 			return getRuleContext(AssignmentContext.class,i);
34458 		}
34459 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34460 		public TerminalNode COMMA_(int i) {
34461 			return getToken(SQLServerStatementParser.COMMA_, i);
34462 		}
34463 		public FromClauseContext fromClause() {
34464 			return getRuleContext(FromClauseContext.class,0);
34465 		}
34466 		public SetAssignmentsClauseContext(ParserRuleContext parent, int invokingState) {
34467 			super(parent, invokingState);
34468 		}
34469 		@Override public int getRuleIndex() { return RULE_setAssignmentsClause; }
34470 		@Override
34471 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34472 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetAssignmentsClause(this);
34473 			else return visitor.visitChildren(this);
34474 		}
34475 	}
34476 
34477 	public final SetAssignmentsClauseContext setAssignmentsClause() throws RecognitionException {
34478 		SetAssignmentsClauseContext _localctx = new SetAssignmentsClauseContext(_ctx, getState());
34479 		enterRule(_localctx, 672, RULE_setAssignmentsClause);
34480 		int _la;
34481 		try {
34482 			enterOuterAlt(_localctx, 1);
34483 			{
34484 			setState(4840);
34485 			match(SET);
34486 			setState(4841);
34487 			assignment();
34488 			setState(4846);
34489 			_errHandler.sync(this);
34490 			_la = _input.LA(1);
34491 			while (_la==COMMA_) {
34492 				{
34493 				{
34494 				setState(4842);
34495 				match(COMMA_);
34496 				setState(4843);
34497 				assignment();
34498 				}
34499 				}
34500 				setState(4848);
34501 				_errHandler.sync(this);
34502 				_la = _input.LA(1);
34503 			}
34504 			setState(4850);
34505 			_errHandler.sync(this);
34506 			_la = _input.LA(1);
34507 			if (_la==FROM) {
34508 				{
34509 				setState(4849);
34510 				fromClause();
34511 				}
34512 			}
34513 
34514 			}
34515 		}
34516 		catch (RecognitionException re) {
34517 			_localctx.exception = re;
34518 			_errHandler.reportError(this, re);
34519 			_errHandler.recover(this, re);
34520 		}
34521 		finally {
34522 			exitRule();
34523 		}
34524 		return _localctx;
34525 	}
34526 
34527 	public static class AssignmentValuesContext extends ParserRuleContext {
34528 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
34529 		public List<AssignmentValueContext> assignmentValue() {
34530 			return getRuleContexts(AssignmentValueContext.class);
34531 		}
34532 		public AssignmentValueContext assignmentValue(int i) {
34533 			return getRuleContext(AssignmentValueContext.class,i);
34534 		}
34535 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
34536 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34537 		public TerminalNode COMMA_(int i) {
34538 			return getToken(SQLServerStatementParser.COMMA_, i);
34539 		}
34540 		public AssignmentValuesContext(ParserRuleContext parent, int invokingState) {
34541 			super(parent, invokingState);
34542 		}
34543 		@Override public int getRuleIndex() { return RULE_assignmentValues; }
34544 		@Override
34545 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34546 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignmentValues(this);
34547 			else return visitor.visitChildren(this);
34548 		}
34549 	}
34550 
34551 	public final AssignmentValuesContext assignmentValues() throws RecognitionException {
34552 		AssignmentValuesContext _localctx = new AssignmentValuesContext(_ctx, getState());
34553 		enterRule(_localctx, 674, RULE_assignmentValues);
34554 		int _la;
34555 		try {
34556 			setState(4865);
34557 			_errHandler.sync(this);
34558 			switch ( getInterpreter().adaptivePredict(_input,526,_ctx) ) {
34559 			case 1:
34560 				enterOuterAlt(_localctx, 1);
34561 				{
34562 				setState(4852);
34563 				match(LP_);
34564 				setState(4853);
34565 				assignmentValue();
34566 				setState(4858);
34567 				_errHandler.sync(this);
34568 				_la = _input.LA(1);
34569 				while (_la==COMMA_) {
34570 					{
34571 					{
34572 					setState(4854);
34573 					match(COMMA_);
34574 					setState(4855);
34575 					assignmentValue();
34576 					}
34577 					}
34578 					setState(4860);
34579 					_errHandler.sync(this);
34580 					_la = _input.LA(1);
34581 				}
34582 				setState(4861);
34583 				match(RP_);
34584 				}
34585 				break;
34586 			case 2:
34587 				enterOuterAlt(_localctx, 2);
34588 				{
34589 				setState(4863);
34590 				match(LP_);
34591 				setState(4864);
34592 				match(RP_);
34593 				}
34594 				break;
34595 			}
34596 		}
34597 		catch (RecognitionException re) {
34598 			_localctx.exception = re;
34599 			_errHandler.reportError(this, re);
34600 			_errHandler.recover(this, re);
34601 		}
34602 		finally {
34603 			exitRule();
34604 		}
34605 		return _localctx;
34606 	}
34607 
34608 	public static class AssignmentValueContext extends ParserRuleContext {
34609 		public ExprContext expr() {
34610 			return getRuleContext(ExprContext.class,0);
34611 		}
34612 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
34613 		public AssignmentValueContext(ParserRuleContext parent, int invokingState) {
34614 			super(parent, invokingState);
34615 		}
34616 		@Override public int getRuleIndex() { return RULE_assignmentValue; }
34617 		@Override
34618 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34619 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignmentValue(this);
34620 			else return visitor.visitChildren(this);
34621 		}
34622 	}
34623 
34624 	public final AssignmentValueContext assignmentValue() throws RecognitionException {
34625 		AssignmentValueContext _localctx = new AssignmentValueContext(_ctx, getState());
34626 		enterRule(_localctx, 676, RULE_assignmentValue);
34627 		try {
34628 			setState(4869);
34629 			_errHandler.sync(this);
34630 			switch (_input.LA(1)) {
34631 			case NOT_:
34632 			case TILDE_:
34633 			case PLUS_:
34634 			case MINUS_:
34635 			case LP_:
34636 			case LBE_:
34637 			case QUESTION_:
34638 			case DOLLAR_:
34639 			case TRUNCATE:
34640 			case SCHEMA:
34641 			case FUNCTION:
34642 			case TRIGGER:
34643 			case CASE:
34644 			case CAST:
34645 			case IF:
34646 			case NOT:
34647 			case NULL:
34648 			case TRUE:
34649 			case FALSE:
34650 			case EXISTS:
34651 			case GROUP:
34652 			case LIMIT:
34653 			case OFFSET:
34654 			case SAVEPOINT:
34655 			case BOOLEAN:
34656 			case CHAR:
34657 			case ARRAY:
34658 			case INTERVAL:
34659 			case DATE:
34660 			case TIME:
34661 			case TIMESTAMP:
34662 			case LOCALTIME:
34663 			case LOCALTIMESTAMP:
34664 			case QUARTER:
34665 			case WEEK:
34666 			case DAY:
34667 			case MICROSECOND:
34668 			case MAX:
34669 			case MIN:
34670 			case SUM:
34671 			case COUNT:
34672 			case AVG:
34673 			case ENABLE:
34674 			case DISABLE:
34675 			case INSTANCE:
34676 			case DO:
34677 			case DEFINER:
34678 			case SQL:
34679 			case CASCADED:
34680 			case LOCAL:
34681 			case NEXT:
34682 			case NAME:
34683 			case INTEGER:
34684 			case TYPE:
34685 			case READ_ONLY:
34686 			case DATABASE:
34687 			case DATEPART:
34688 			case PASSWORD:
34689 			case BINARY:
34690 			case HIDDEN_:
34691 			case MOD:
34692 			case PARTITION:
34693 			case PARTITIONS:
34694 			case TOP:
34695 			case ROW:
34696 			case ROWS:
34697 			case XOR:
34698 			case ALWAYS:
34699 			case ROLE:
34700 			case START:
34701 			case ALGORITHM:
34702 			case AUTO:
34703 			case BLOCKERS:
34704 			case CLUSTERED:
34705 			case NONCLUSTERED:
34706 			case COLUMNSTORE:
34707 			case CONTENT:
34708 			case CONVERT:
34709 			case YEARS:
34710 			case MONTHS:
34711 			case WEEKS:
34712 			case DAYS:
34713 			case MINUTES:
34714 			case DENY:
34715 			case DETERMINISTIC:
34716 			case DISTRIBUTION:
34717 			case DOCUMENT:
34718 			case DURABILITY:
34719 			case ENCRYPTED:
34720 			case FILESTREAM:
34721 			case FILETABLE:
34722 			case FILLFACTOR:
34723 			case FOLLOWING:
34724 			case HASH:
34725 			case HEAP:
34726 			case INBOUND:
34727 			case OUTBOUND:
34728 			case UNBOUNDED:
34729 			case INFINITE:
34730 			case LOGIN:
34731 			case MASKED:
34732 			case MAXDOP:
34733 			case MOVE:
34734 			case NOCHECK:
34735 			case OBJECT:
34736 			case OFF:
34737 			case ONLINE:
34738 			case OVER:
34739 			case PAGE:
34740 			case PAUSED:
34741 			case PERIOD:
34742 			case PERSISTED:
34743 			case PRECEDING:
34744 			case RANDOMIZED:
34745 			case RANGE:
34746 			case REBUILD:
34747 			case REPLICATE:
34748 			case REPLICATION:
34749 			case RESUMABLE:
34750 			case ROWGUIDCOL:
34751 			case SAVE:
34752 			case SELF:
34753 			case SPARSE:
34754 			case SWITCH:
34755 			case TRAN:
34756 			case TRANCOUNT:
34757 			case CONTROL:
34758 			case CONCAT:
34759 			case TAKE:
34760 			case OWNERSHIP:
34761 			case DEFINITION:
34762 			case APPLICATION:
34763 			case ASSEMBLY:
34764 			case SYMMETRIC:
34765 			case ASYMMETRIC:
34766 			case SERVER:
34767 			case RECEIVE:
34768 			case CHANGE:
34769 			case TRACE:
34770 			case TRACKING:
34771 			case RESOURCES:
34772 			case SETTINGS:
34773 			case STATE:
34774 			case AVAILABILITY:
34775 			case CREDENTIAL:
34776 			case ENDPOINT:
34777 			case EVENT:
34778 			case NOTIFICATION:
34779 			case LINKED:
34780 			case AUDIT:
34781 			case DDL:
34782 			case XML:
34783 			case IMPERSONATE:
34784 			case SECURABLES:
34785 			case AUTHENTICATE:
34786 			case EXTERNAL:
34787 			case ACCESS:
34788 			case ADMINISTER:
34789 			case BULK:
34790 			case OPERATIONS:
34791 			case UNSAFE:
34792 			case SHUTDOWN:
34793 			case SCOPED:
34794 			case CONFIGURATION:
34795 			case DATASPACE:
34796 			case SERVICE:
34797 			case CERTIFICATE:
34798 			case CONTRACT:
34799 			case ENCRYPTION:
34800 			case MASTER:
34801 			case DATA:
34802 			case SOURCE:
34803 			case FILE:
34804 			case FORMAT:
34805 			case LIBRARY:
34806 			case FULLTEXT:
34807 			case MASK:
34808 			case UNMASK:
34809 			case MESSAGE:
34810 			case REMOTE:
34811 			case BINDING:
34812 			case ROUTE:
34813 			case SECURITY:
34814 			case POLICY:
34815 			case AGGREGATE:
34816 			case QUEUE:
34817 			case RULE:
34818 			case SYNONYM:
34819 			case COLLECTION:
34820 			case SCRIPT:
34821 			case KILL:
34822 			case BACKUP:
34823 			case LOG:
34824 			case SHOWPLAN:
34825 			case SUBSCRIBE:
34826 			case QUERY:
34827 			case NOTIFICATIONS:
34828 			case CHECKPOINT:
34829 			case SEQUENCE:
34830 			case ABORT_AFTER_WAIT:
34831 			case ALLOW_PAGE_LOCKS:
34832 			case ALLOW_ROW_LOCKS:
34833 			case ALL_SPARSE_COLUMNS:
34834 			case BUCKET_COUNT:
34835 			case COLUMNSTORE_ARCHIVE:
34836 			case COLUMN_ENCRYPTION_KEY:
34837 			case COLUMN_SET:
34838 			case COMPRESSION_DELAY:
34839 			case DATABASE_DEAULT:
34840 			case DATA_COMPRESSION:
34841 			case DATA_CONSISTENCY_CHECK:
34842 			case ENCRYPTION_TYPE:
34843 			case SYSTEM_TIME:
34844 			case SYSTEM_VERSIONING:
34845 			case TEXTIMAGE_ON:
34846 			case WAIT_AT_LOW_PRIORITY:
34847 			case STATISTICS_INCREMENTAL:
34848 			case STATISTICS_NORECOMPUTE:
34849 			case ROUND_ROBIN:
34850 			case SCHEMA_AND_DATA:
34851 			case SCHEMA_ONLY:
34852 			case SORT_IN_TEMPDB:
34853 			case IGNORE_DUP_KEY:
34854 			case IMPLICIT_TRANSACTIONS:
34855 			case MAX_DURATION:
34856 			case MEMORY_OPTIMIZED:
34857 			case MIGRATION_STATE:
34858 			case PAD_INDEX:
34859 			case REMOTE_DATA_ARCHIVE:
34860 			case FILESTREAM_ON:
34861 			case FILETABLE_COLLATE_FILENAME:
34862 			case FILETABLE_DIRECTORY:
34863 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
34864 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
34865 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
34866 			case FILTER_PREDICATE:
34867 			case HISTORY_RETENTION_PERIOD:
34868 			case HISTORY_TABLE:
34869 			case LOCK_ESCALATION:
34870 			case DROP_EXISTING:
34871 			case ROW_NUMBER:
34872 			case FIRST:
34873 			case DATETIME2:
34874 			case OUTPUT:
34875 			case INSERTED:
34876 			case DELETED:
34877 			case FILENAME:
34878 			case MAXSIZE:
34879 			case FILEGROWTH:
34880 			case UNLIMITED:
34881 			case KB:
34882 			case MB:
34883 			case GB:
34884 			case TB:
34885 			case MEMORY_OPTIMIZED_DATA:
34886 			case FILEGROUP:
34887 			case NON_TRANSACTED_ACCESS:
34888 			case DB_CHAINING:
34889 			case TRUSTWORTHY:
34890 			case FORWARD_ONLY:
34891 			case KEYSET:
34892 			case FAST_FORWARD:
34893 			case SCROLL_LOCKS:
34894 			case OPTIMISTIC:
34895 			case TYPE_WARNING:
34896 			case SCHEMABINDING:
34897 			case CALLER:
34898 			case OWNER:
34899 			case SNAPSHOT:
34900 			case REPEATABLE:
34901 			case SERIALIZABLE:
34902 			case NATIVE_COMPILATION:
34903 			case VIEW_METADATA:
34904 			case INSTEAD:
34905 			case APPEND:
34906 			case INCREMENT:
34907 			case CACHE:
34908 			case MINVALUE:
34909 			case MAXVALUE:
34910 			case RESTART:
34911 			case LOB_COMPACTION:
34912 			case COMPRESS_ALL_ROW_GROUPS:
34913 			case REORGANIZE:
34914 			case RESUME:
34915 			case PAUSE:
34916 			case ABORT:
34917 			case ACCELERATED_DATABASE_RECOVERY:
34918 			case PERSISTENT_VERSION_STORE_FILEGROUP:
34919 			case IMMEDIATE:
34920 			case NO_WAIT:
34921 			case TARGET_RECOVERY_TIME:
34922 			case SECONDS:
34923 			case HONOR_BROKER_PRIORITY:
34924 			case ERROR_BROKER_CONVERSATIONS:
34925 			case NEW_BROKER:
34926 			case DISABLE_BROKER:
34927 			case ENABLE_BROKER:
34928 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
34929 			case READ_COMMITTED_SNAPSHOT:
34930 			case ALLOW_SNAPSHOT_ISOLATION:
34931 			case RECURSIVE_TRIGGERS:
34932 			case QUOTED_IDENTIFIER:
34933 			case NUMERIC_ROUNDABORT:
34934 			case CONCAT_NULL_YIELDS_NULL:
34935 			case COMPATIBILITY_LEVEL:
34936 			case ARITHABORT:
34937 			case ANSI_WARNINGS:
34938 			case ANSI_PADDING:
34939 			case ANSI_NULLS:
34940 			case ANSI_NULL_DEFAULT:
34941 			case PAGE_VERIFY:
34942 			case CHECKSUM:
34943 			case TORN_PAGE_DETECTION:
34944 			case BULK_LOGGED:
34945 			case RECOVERY:
34946 			case TOTAL_EXECUTION_CPU_TIME_MS:
34947 			case TOTAL_COMPILE_CPU_TIME_MS:
34948 			case STALE_CAPTURE_POLICY_THRESHOLD:
34949 			case EXECUTION_COUNT:
34950 			case QUERY_CAPTURE_POLICY:
34951 			case WAIT_STATS_CAPTURE_MODE:
34952 			case MAX_PLANS_PER_QUERY:
34953 			case QUERY_CAPTURE_MODE:
34954 			case SIZE_BASED_CLEANUP_MODE:
34955 			case INTERVAL_LENGTH_MINUTES:
34956 			case MAX_STORAGE_SIZE_MB:
34957 			case DATA_FLUSH_INTERVAL_SECONDS:
34958 			case CLEANUP_POLICY:
34959 			case CUSTOM:
34960 			case STALE_QUERY_THRESHOLD_DAYS:
34961 			case OPERATION_MODE:
34962 			case QUERY_STORE:
34963 			case CURSOR_DEFAULT:
34964 			case GLOBAL:
34965 			case CURSOR_CLOSE_ON_COMMIT:
34966 			case HOURS:
34967 			case CHANGE_RETENTION:
34968 			case AUTO_CLEANUP:
34969 			case CHANGE_TRACKING:
34970 			case AUTOMATIC_TUNING:
34971 			case FORCE_LAST_GOOD_PLAN:
34972 			case AUTO_UPDATE_STATISTICS_ASYNC:
34973 			case AUTO_UPDATE_STATISTICS:
34974 			case AUTO_SHRINK:
34975 			case AUTO_CREATE_STATISTICS:
34976 			case INCREMENTAL:
34977 			case AUTO_CLOSE:
34978 			case DATA_RETENTION:
34979 			case TEMPORAL_HISTORY_RETENTION:
34980 			case EDITION:
34981 			case MIXED_PAGE_ALLOCATION:
34982 			case DISABLED:
34983 			case ALLOWED:
34984 			case HADR:
34985 			case MULTI_USER:
34986 			case RESTRICTED_USER:
34987 			case SINGLE_USER:
34988 			case OFFLINE:
34989 			case EMERGENCY:
34990 			case SUSPEND:
34991 			case DATE_CORRELATION_OPTIMIZATION:
34992 			case ELASTIC_POOL:
34993 			case SERVICE_OBJECTIVE:
34994 			case DATABASE_NAME:
34995 			case ALLOW_CONNECTIONS:
34996 			case GEO:
34997 			case NAMED:
34998 			case DATEFIRST:
34999 			case BACKUP_STORAGE_REDUNDANCY:
35000 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
35001 			case SECONDARY:
35002 			case FAILOVER:
35003 			case DEFAULT_FULLTEXT_LANGUAGE:
35004 			case DEFAULT_LANGUAGE:
35005 			case INLINE:
35006 			case NESTED_TRIGGERS:
35007 			case TRANSFORM_NOISE_WORDS:
35008 			case TWO_DIGIT_YEAR_CUTOFF:
35009 			case PERSISTENT_LOG_BUFFER:
35010 			case DIRECTORY_NAME:
35011 			case DATEFORMAT:
35012 			case DELAYED_DURABILITY:
35013 			case AUTHORIZATION:
35014 			case TRANSFER:
35015 			case SEARCH:
35016 			case MEMBER:
35017 			case IDENTIFIER_:
35018 			case DELIMITED_IDENTIFIER_:
35019 			case STRING_:
35020 			case NUMBER_:
35021 			case HEX_DIGIT_:
35022 			case BIT_NUM_:
35023 			case NCHAR_TEXT:
35024 				enterOuterAlt(_localctx, 1);
35025 				{
35026 				setState(4867);
35027 				expr(0);
35028 				}
35029 				break;
35030 			case DEFAULT:
35031 				enterOuterAlt(_localctx, 2);
35032 				{
35033 				setState(4868);
35034 				match(DEFAULT);
35035 				}
35036 				break;
35037 			default:
35038 				throw new NoViableAltException(this);
35039 			}
35040 		}
35041 		catch (RecognitionException re) {
35042 			_localctx.exception = re;
35043 			_errHandler.reportError(this, re);
35044 			_errHandler.recover(this, re);
35045 		}
35046 		finally {
35047 			exitRule();
35048 		}
35049 		return _localctx;
35050 	}
35051 
35052 	public static class DeleteContext extends ParserRuleContext {
35053 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
35054 		public SingleTableClauseContext singleTableClause() {
35055 			return getRuleContext(SingleTableClauseContext.class,0);
35056 		}
35057 		public MultipleTablesClauseContext multipleTablesClause() {
35058 			return getRuleContext(MultipleTablesClauseContext.class,0);
35059 		}
35060 		public WithClauseContext withClause() {
35061 			return getRuleContext(WithClauseContext.class,0);
35062 		}
35063 		public TopContext top() {
35064 			return getRuleContext(TopContext.class,0);
35065 		}
35066 		public OutputClauseContext outputClause() {
35067 			return getRuleContext(OutputClauseContext.class,0);
35068 		}
35069 		public WhereClauseContext whereClause() {
35070 			return getRuleContext(WhereClauseContext.class,0);
35071 		}
35072 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
35073 		public QueryHintContext queryHint() {
35074 			return getRuleContext(QueryHintContext.class,0);
35075 		}
35076 		public DeleteContext(ParserRuleContext parent, int invokingState) {
35077 			super(parent, invokingState);
35078 		}
35079 		@Override public int getRuleIndex() { return RULE_delete; }
35080 		@Override
35081 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35082 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDelete(this);
35083 			else return visitor.visitChildren(this);
35084 		}
35085 	}
35086 
35087 	public final DeleteContext delete() throws RecognitionException {
35088 		DeleteContext _localctx = new DeleteContext(_ctx, getState());
35089 		enterRule(_localctx, 678, RULE_delete);
35090 		int _la;
35091 		try {
35092 			enterOuterAlt(_localctx, 1);
35093 			{
35094 			setState(4872);
35095 			_errHandler.sync(this);
35096 			_la = _input.LA(1);
35097 			if (_la==WITH) {
35098 				{
35099 				setState(4871);
35100 				withClause();
35101 				}
35102 			}
35103 
35104 			setState(4874);
35105 			match(DELETE);
35106 			setState(4876);
35107 			_errHandler.sync(this);
35108 			switch ( getInterpreter().adaptivePredict(_input,529,_ctx) ) {
35109 			case 1:
35110 				{
35111 				setState(4875);
35112 				top();
35113 				}
35114 				break;
35115 			}
35116 			setState(4880);
35117 			_errHandler.sync(this);
35118 			switch ( getInterpreter().adaptivePredict(_input,530,_ctx) ) {
35119 			case 1:
35120 				{
35121 				setState(4878);
35122 				singleTableClause();
35123 				}
35124 				break;
35125 			case 2:
35126 				{
35127 				setState(4879);
35128 				multipleTablesClause();
35129 				}
35130 				break;
35131 			}
35132 			setState(4883);
35133 			_errHandler.sync(this);
35134 			_la = _input.LA(1);
35135 			if (_la==OUTPUT) {
35136 				{
35137 				setState(4882);
35138 				outputClause();
35139 				}
35140 			}
35141 
35142 			setState(4886);
35143 			_errHandler.sync(this);
35144 			_la = _input.LA(1);
35145 			if (_la==WHERE) {
35146 				{
35147 				setState(4885);
35148 				whereClause();
35149 				}
35150 			}
35151 
35152 			setState(4890);
35153 			_errHandler.sync(this);
35154 			_la = _input.LA(1);
35155 			if (_la==OPTION) {
35156 				{
35157 				setState(4888);
35158 				match(OPTION);
35159 				setState(4889);
35160 				queryHint();
35161 				}
35162 			}
35163 
35164 			}
35165 		}
35166 		catch (RecognitionException re) {
35167 			_localctx.exception = re;
35168 			_errHandler.reportError(this, re);
35169 			_errHandler.recover(this, re);
35170 		}
35171 		finally {
35172 			exitRule();
35173 		}
35174 		return _localctx;
35175 	}
35176 
35177 	public static class SingleTableClauseContext extends ParserRuleContext {
35178 		public TableNameContext tableName() {
35179 			return getRuleContext(TableNameContext.class,0);
35180 		}
35181 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
35182 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35183 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35184 		public AliasContext alias() {
35185 			return getRuleContext(AliasContext.class,0);
35186 		}
35187 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
35188 		public SingleTableClauseContext(ParserRuleContext parent, int invokingState) {
35189 			super(parent, invokingState);
35190 		}
35191 		@Override public int getRuleIndex() { return RULE_singleTableClause; }
35192 		@Override
35193 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35194 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSingleTableClause(this);
35195 			else return visitor.visitChildren(this);
35196 		}
35197 	}
35198 
35199 	public final SingleTableClauseContext singleTableClause() throws RecognitionException {
35200 		SingleTableClauseContext _localctx = new SingleTableClauseContext(_ctx, getState());
35201 		enterRule(_localctx, 680, RULE_singleTableClause);
35202 		int _la;
35203 		try {
35204 			enterOuterAlt(_localctx, 1);
35205 			{
35206 			setState(4893);
35207 			_errHandler.sync(this);
35208 			_la = _input.LA(1);
35209 			if (_la==FROM) {
35210 				{
35211 				setState(4892);
35212 				match(FROM);
35213 				}
35214 			}
35215 
35216 			setState(4896);
35217 			_errHandler.sync(this);
35218 			_la = _input.LA(1);
35219 			if (_la==LP_) {
35220 				{
35221 				setState(4895);
35222 				match(LP_);
35223 				}
35224 			}
35225 
35226 			setState(4898);
35227 			tableName();
35228 			setState(4900);
35229 			_errHandler.sync(this);
35230 			_la = _input.LA(1);
35231 			if (_la==RP_) {
35232 				{
35233 				setState(4899);
35234 				match(RP_);
35235 				}
35236 			}
35237 
35238 			setState(4906);
35239 			_errHandler.sync(this);
35240 			switch ( getInterpreter().adaptivePredict(_input,538,_ctx) ) {
35241 			case 1:
35242 				{
35243 				setState(4903);
35244 				_errHandler.sync(this);
35245 				_la = _input.LA(1);
35246 				if (_la==AS) {
35247 					{
35248 					setState(4902);
35249 					match(AS);
35250 					}
35251 				}
35252 
35253 				setState(4905);
35254 				alias();
35255 				}
35256 				break;
35257 			}
35258 			}
35259 		}
35260 		catch (RecognitionException re) {
35261 			_localctx.exception = re;
35262 			_errHandler.reportError(this, re);
35263 			_errHandler.recover(this, re);
35264 		}
35265 		finally {
35266 			exitRule();
35267 		}
35268 		return _localctx;
35269 	}
35270 
35271 	public static class MultipleTablesClauseContext extends ParserRuleContext {
35272 		public MultipleTableNamesContext multipleTableNames() {
35273 			return getRuleContext(MultipleTableNamesContext.class,0);
35274 		}
35275 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
35276 		public TableReferencesContext tableReferences() {
35277 			return getRuleContext(TableReferencesContext.class,0);
35278 		}
35279 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
35280 		public MultipleTablesClauseContext(ParserRuleContext parent, int invokingState) {
35281 			super(parent, invokingState);
35282 		}
35283 		@Override public int getRuleIndex() { return RULE_multipleTablesClause; }
35284 		@Override
35285 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35286 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMultipleTablesClause(this);
35287 			else return visitor.visitChildren(this);
35288 		}
35289 	}
35290 
35291 	public final MultipleTablesClauseContext multipleTablesClause() throws RecognitionException {
35292 		MultipleTablesClauseContext _localctx = new MultipleTablesClauseContext(_ctx, getState());
35293 		enterRule(_localctx, 682, RULE_multipleTablesClause);
35294 		try {
35295 			setState(4917);
35296 			_errHandler.sync(this);
35297 			switch (_input.LA(1)) {
35298 			case TRUNCATE:
35299 			case SCHEMA:
35300 			case FUNCTION:
35301 			case TRIGGER:
35302 			case CAST:
35303 			case GROUP:
35304 			case LIMIT:
35305 			case OFFSET:
35306 			case SAVEPOINT:
35307 			case BOOLEAN:
35308 			case ARRAY:
35309 			case DATE:
35310 			case LOCALTIME:
35311 			case LOCALTIMESTAMP:
35312 			case QUARTER:
35313 			case WEEK:
35314 			case DAY:
35315 			case MICROSECOND:
35316 			case MAX:
35317 			case MIN:
35318 			case SUM:
35319 			case COUNT:
35320 			case AVG:
35321 			case ENABLE:
35322 			case DISABLE:
35323 			case INSTANCE:
35324 			case DO:
35325 			case DEFINER:
35326 			case SQL:
35327 			case CASCADED:
35328 			case LOCAL:
35329 			case NEXT:
35330 			case NAME:
35331 			case INTEGER:
35332 			case TYPE:
35333 			case READ_ONLY:
35334 			case DATABASE:
35335 			case DATEPART:
35336 			case PASSWORD:
35337 			case BINARY:
35338 			case HIDDEN_:
35339 			case MOD:
35340 			case PARTITION:
35341 			case PARTITIONS:
35342 			case TOP:
35343 			case ROW:
35344 			case ROWS:
35345 			case XOR:
35346 			case ALWAYS:
35347 			case ROLE:
35348 			case START:
35349 			case ALGORITHM:
35350 			case AUTO:
35351 			case BLOCKERS:
35352 			case CLUSTERED:
35353 			case NONCLUSTERED:
35354 			case COLUMNSTORE:
35355 			case CONTENT:
35356 			case YEARS:
35357 			case MONTHS:
35358 			case WEEKS:
35359 			case DAYS:
35360 			case MINUTES:
35361 			case DENY:
35362 			case DETERMINISTIC:
35363 			case DISTRIBUTION:
35364 			case DOCUMENT:
35365 			case DURABILITY:
35366 			case ENCRYPTED:
35367 			case FILESTREAM:
35368 			case FILETABLE:
35369 			case FILLFACTOR:
35370 			case FOLLOWING:
35371 			case HASH:
35372 			case HEAP:
35373 			case INBOUND:
35374 			case OUTBOUND:
35375 			case UNBOUNDED:
35376 			case INFINITE:
35377 			case LOGIN:
35378 			case MASKED:
35379 			case MAXDOP:
35380 			case MOVE:
35381 			case NOCHECK:
35382 			case OBJECT:
35383 			case OFF:
35384 			case ONLINE:
35385 			case OVER:
35386 			case PAGE:
35387 			case PAUSED:
35388 			case PERIOD:
35389 			case PERSISTED:
35390 			case PRECEDING:
35391 			case RANDOMIZED:
35392 			case RANGE:
35393 			case REBUILD:
35394 			case REPLICATE:
35395 			case REPLICATION:
35396 			case RESUMABLE:
35397 			case ROWGUIDCOL:
35398 			case SAVE:
35399 			case SELF:
35400 			case SPARSE:
35401 			case SWITCH:
35402 			case TRAN:
35403 			case TRANCOUNT:
35404 			case CONTROL:
35405 			case CONCAT:
35406 			case TAKE:
35407 			case OWNERSHIP:
35408 			case DEFINITION:
35409 			case APPLICATION:
35410 			case ASSEMBLY:
35411 			case SYMMETRIC:
35412 			case ASYMMETRIC:
35413 			case SERVER:
35414 			case RECEIVE:
35415 			case CHANGE:
35416 			case TRACE:
35417 			case TRACKING:
35418 			case RESOURCES:
35419 			case SETTINGS:
35420 			case STATE:
35421 			case AVAILABILITY:
35422 			case CREDENTIAL:
35423 			case ENDPOINT:
35424 			case EVENT:
35425 			case NOTIFICATION:
35426 			case LINKED:
35427 			case AUDIT:
35428 			case DDL:
35429 			case XML:
35430 			case IMPERSONATE:
35431 			case SECURABLES:
35432 			case AUTHENTICATE:
35433 			case EXTERNAL:
35434 			case ACCESS:
35435 			case ADMINISTER:
35436 			case BULK:
35437 			case OPERATIONS:
35438 			case UNSAFE:
35439 			case SHUTDOWN:
35440 			case SCOPED:
35441 			case CONFIGURATION:
35442 			case DATASPACE:
35443 			case SERVICE:
35444 			case CERTIFICATE:
35445 			case CONTRACT:
35446 			case ENCRYPTION:
35447 			case MASTER:
35448 			case DATA:
35449 			case SOURCE:
35450 			case FILE:
35451 			case FORMAT:
35452 			case LIBRARY:
35453 			case FULLTEXT:
35454 			case MASK:
35455 			case UNMASK:
35456 			case MESSAGE:
35457 			case REMOTE:
35458 			case BINDING:
35459 			case ROUTE:
35460 			case SECURITY:
35461 			case POLICY:
35462 			case AGGREGATE:
35463 			case QUEUE:
35464 			case RULE:
35465 			case SYNONYM:
35466 			case COLLECTION:
35467 			case SCRIPT:
35468 			case KILL:
35469 			case BACKUP:
35470 			case LOG:
35471 			case SHOWPLAN:
35472 			case SUBSCRIBE:
35473 			case QUERY:
35474 			case NOTIFICATIONS:
35475 			case CHECKPOINT:
35476 			case SEQUENCE:
35477 			case ABORT_AFTER_WAIT:
35478 			case ALLOW_PAGE_LOCKS:
35479 			case ALLOW_ROW_LOCKS:
35480 			case ALL_SPARSE_COLUMNS:
35481 			case BUCKET_COUNT:
35482 			case COLUMNSTORE_ARCHIVE:
35483 			case COLUMN_ENCRYPTION_KEY:
35484 			case COLUMN_SET:
35485 			case COMPRESSION_DELAY:
35486 			case DATABASE_DEAULT:
35487 			case DATA_COMPRESSION:
35488 			case DATA_CONSISTENCY_CHECK:
35489 			case ENCRYPTION_TYPE:
35490 			case SYSTEM_TIME:
35491 			case SYSTEM_VERSIONING:
35492 			case TEXTIMAGE_ON:
35493 			case WAIT_AT_LOW_PRIORITY:
35494 			case STATISTICS_INCREMENTAL:
35495 			case STATISTICS_NORECOMPUTE:
35496 			case ROUND_ROBIN:
35497 			case SCHEMA_AND_DATA:
35498 			case SCHEMA_ONLY:
35499 			case SORT_IN_TEMPDB:
35500 			case IGNORE_DUP_KEY:
35501 			case IMPLICIT_TRANSACTIONS:
35502 			case MAX_DURATION:
35503 			case MEMORY_OPTIMIZED:
35504 			case MIGRATION_STATE:
35505 			case PAD_INDEX:
35506 			case REMOTE_DATA_ARCHIVE:
35507 			case FILESTREAM_ON:
35508 			case FILETABLE_COLLATE_FILENAME:
35509 			case FILETABLE_DIRECTORY:
35510 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
35511 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
35512 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
35513 			case FILTER_PREDICATE:
35514 			case HISTORY_RETENTION_PERIOD:
35515 			case HISTORY_TABLE:
35516 			case LOCK_ESCALATION:
35517 			case DROP_EXISTING:
35518 			case ROW_NUMBER:
35519 			case FIRST:
35520 			case DATETIME2:
35521 			case OUTPUT:
35522 			case INSERTED:
35523 			case DELETED:
35524 			case FILENAME:
35525 			case MAXSIZE:
35526 			case FILEGROWTH:
35527 			case UNLIMITED:
35528 			case KB:
35529 			case MB:
35530 			case GB:
35531 			case TB:
35532 			case MEMORY_OPTIMIZED_DATA:
35533 			case FILEGROUP:
35534 			case NON_TRANSACTED_ACCESS:
35535 			case DB_CHAINING:
35536 			case TRUSTWORTHY:
35537 			case FORWARD_ONLY:
35538 			case KEYSET:
35539 			case FAST_FORWARD:
35540 			case SCROLL_LOCKS:
35541 			case OPTIMISTIC:
35542 			case TYPE_WARNING:
35543 			case SCHEMABINDING:
35544 			case CALLER:
35545 			case OWNER:
35546 			case SNAPSHOT:
35547 			case REPEATABLE:
35548 			case SERIALIZABLE:
35549 			case NATIVE_COMPILATION:
35550 			case VIEW_METADATA:
35551 			case INSTEAD:
35552 			case APPEND:
35553 			case INCREMENT:
35554 			case CACHE:
35555 			case MINVALUE:
35556 			case MAXVALUE:
35557 			case RESTART:
35558 			case LOB_COMPACTION:
35559 			case COMPRESS_ALL_ROW_GROUPS:
35560 			case REORGANIZE:
35561 			case RESUME:
35562 			case PAUSE:
35563 			case ABORT:
35564 			case ACCELERATED_DATABASE_RECOVERY:
35565 			case PERSISTENT_VERSION_STORE_FILEGROUP:
35566 			case IMMEDIATE:
35567 			case NO_WAIT:
35568 			case TARGET_RECOVERY_TIME:
35569 			case SECONDS:
35570 			case HONOR_BROKER_PRIORITY:
35571 			case ERROR_BROKER_CONVERSATIONS:
35572 			case NEW_BROKER:
35573 			case DISABLE_BROKER:
35574 			case ENABLE_BROKER:
35575 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
35576 			case READ_COMMITTED_SNAPSHOT:
35577 			case ALLOW_SNAPSHOT_ISOLATION:
35578 			case RECURSIVE_TRIGGERS:
35579 			case QUOTED_IDENTIFIER:
35580 			case NUMERIC_ROUNDABORT:
35581 			case CONCAT_NULL_YIELDS_NULL:
35582 			case COMPATIBILITY_LEVEL:
35583 			case ARITHABORT:
35584 			case ANSI_WARNINGS:
35585 			case ANSI_PADDING:
35586 			case ANSI_NULLS:
35587 			case ANSI_NULL_DEFAULT:
35588 			case PAGE_VERIFY:
35589 			case CHECKSUM:
35590 			case TORN_PAGE_DETECTION:
35591 			case BULK_LOGGED:
35592 			case RECOVERY:
35593 			case TOTAL_EXECUTION_CPU_TIME_MS:
35594 			case TOTAL_COMPILE_CPU_TIME_MS:
35595 			case STALE_CAPTURE_POLICY_THRESHOLD:
35596 			case EXECUTION_COUNT:
35597 			case QUERY_CAPTURE_POLICY:
35598 			case WAIT_STATS_CAPTURE_MODE:
35599 			case MAX_PLANS_PER_QUERY:
35600 			case QUERY_CAPTURE_MODE:
35601 			case SIZE_BASED_CLEANUP_MODE:
35602 			case INTERVAL_LENGTH_MINUTES:
35603 			case MAX_STORAGE_SIZE_MB:
35604 			case DATA_FLUSH_INTERVAL_SECONDS:
35605 			case CLEANUP_POLICY:
35606 			case CUSTOM:
35607 			case STALE_QUERY_THRESHOLD_DAYS:
35608 			case OPERATION_MODE:
35609 			case QUERY_STORE:
35610 			case CURSOR_DEFAULT:
35611 			case GLOBAL:
35612 			case CURSOR_CLOSE_ON_COMMIT:
35613 			case HOURS:
35614 			case CHANGE_RETENTION:
35615 			case AUTO_CLEANUP:
35616 			case CHANGE_TRACKING:
35617 			case AUTOMATIC_TUNING:
35618 			case FORCE_LAST_GOOD_PLAN:
35619 			case AUTO_UPDATE_STATISTICS_ASYNC:
35620 			case AUTO_UPDATE_STATISTICS:
35621 			case AUTO_SHRINK:
35622 			case AUTO_CREATE_STATISTICS:
35623 			case INCREMENTAL:
35624 			case AUTO_CLOSE:
35625 			case DATA_RETENTION:
35626 			case TEMPORAL_HISTORY_RETENTION:
35627 			case EDITION:
35628 			case MIXED_PAGE_ALLOCATION:
35629 			case DISABLED:
35630 			case ALLOWED:
35631 			case HADR:
35632 			case MULTI_USER:
35633 			case RESTRICTED_USER:
35634 			case SINGLE_USER:
35635 			case OFFLINE:
35636 			case EMERGENCY:
35637 			case SUSPEND:
35638 			case DATE_CORRELATION_OPTIMIZATION:
35639 			case ELASTIC_POOL:
35640 			case SERVICE_OBJECTIVE:
35641 			case DATABASE_NAME:
35642 			case ALLOW_CONNECTIONS:
35643 			case GEO:
35644 			case NAMED:
35645 			case DATEFIRST:
35646 			case BACKUP_STORAGE_REDUNDANCY:
35647 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
35648 			case SECONDARY:
35649 			case FAILOVER:
35650 			case DEFAULT_FULLTEXT_LANGUAGE:
35651 			case DEFAULT_LANGUAGE:
35652 			case INLINE:
35653 			case NESTED_TRIGGERS:
35654 			case TRANSFORM_NOISE_WORDS:
35655 			case TWO_DIGIT_YEAR_CUTOFF:
35656 			case PERSISTENT_LOG_BUFFER:
35657 			case DIRECTORY_NAME:
35658 			case DATEFORMAT:
35659 			case DELAYED_DURABILITY:
35660 			case AUTHORIZATION:
35661 			case TRANSFER:
35662 			case SEARCH:
35663 			case MEMBER:
35664 			case IDENTIFIER_:
35665 			case DELIMITED_IDENTIFIER_:
35666 				enterOuterAlt(_localctx, 1);
35667 				{
35668 				setState(4908);
35669 				multipleTableNames();
35670 				setState(4909);
35671 				match(FROM);
35672 				setState(4910);
35673 				tableReferences();
35674 				}
35675 				break;
35676 			case FROM:
35677 				enterOuterAlt(_localctx, 2);
35678 				{
35679 				setState(4912);
35680 				match(FROM);
35681 				setState(4913);
35682 				multipleTableNames();
35683 				setState(4914);
35684 				match(USING);
35685 				setState(4915);
35686 				tableReferences();
35687 				}
35688 				break;
35689 			default:
35690 				throw new NoViableAltException(this);
35691 			}
35692 		}
35693 		catch (RecognitionException re) {
35694 			_localctx.exception = re;
35695 			_errHandler.reportError(this, re);
35696 			_errHandler.recover(this, re);
35697 		}
35698 		finally {
35699 			exitRule();
35700 		}
35701 		return _localctx;
35702 	}
35703 
35704 	public static class MultipleTableNamesContext extends ParserRuleContext {
35705 		public List<TableNameContext> tableName() {
35706 			return getRuleContexts(TableNameContext.class);
35707 		}
35708 		public TableNameContext tableName(int i) {
35709 			return getRuleContext(TableNameContext.class,i);
35710 		}
35711 		public List<TerminalNode> DOT_ASTERISK_() { return getTokens(SQLServerStatementParser.DOT_ASTERISK_); }
35712 		public TerminalNode DOT_ASTERISK_(int i) {
35713 			return getToken(SQLServerStatementParser.DOT_ASTERISK_, i);
35714 		}
35715 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35716 		public TerminalNode COMMA_(int i) {
35717 			return getToken(SQLServerStatementParser.COMMA_, i);
35718 		}
35719 		public MultipleTableNamesContext(ParserRuleContext parent, int invokingState) {
35720 			super(parent, invokingState);
35721 		}
35722 		@Override public int getRuleIndex() { return RULE_multipleTableNames; }
35723 		@Override
35724 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35725 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMultipleTableNames(this);
35726 			else return visitor.visitChildren(this);
35727 		}
35728 	}
35729 
35730 	public final MultipleTableNamesContext multipleTableNames() throws RecognitionException {
35731 		MultipleTableNamesContext _localctx = new MultipleTableNamesContext(_ctx, getState());
35732 		enterRule(_localctx, 684, RULE_multipleTableNames);
35733 		int _la;
35734 		try {
35735 			enterOuterAlt(_localctx, 1);
35736 			{
35737 			setState(4919);
35738 			tableName();
35739 			setState(4921);
35740 			_errHandler.sync(this);
35741 			_la = _input.LA(1);
35742 			if (_la==DOT_ASTERISK_) {
35743 				{
35744 				setState(4920);
35745 				match(DOT_ASTERISK_);
35746 				}
35747 			}
35748 
35749 			setState(4930);
35750 			_errHandler.sync(this);
35751 			_la = _input.LA(1);
35752 			while (_la==COMMA_) {
35753 				{
35754 				{
35755 				setState(4923);
35756 				match(COMMA_);
35757 				setState(4924);
35758 				tableName();
35759 				setState(4926);
35760 				_errHandler.sync(this);
35761 				_la = _input.LA(1);
35762 				if (_la==DOT_ASTERISK_) {
35763 					{
35764 					setState(4925);
35765 					match(DOT_ASTERISK_);
35766 					}
35767 				}
35768 
35769 				}
35770 				}
35771 				setState(4932);
35772 				_errHandler.sync(this);
35773 				_la = _input.LA(1);
35774 			}
35775 			}
35776 		}
35777 		catch (RecognitionException re) {
35778 			_localctx.exception = re;
35779 			_errHandler.reportError(this, re);
35780 			_errHandler.recover(this, re);
35781 		}
35782 		finally {
35783 			exitRule();
35784 		}
35785 		return _localctx;
35786 	}
35787 
35788 	public static class SelectContext extends ParserRuleContext {
35789 		public AggregationClauseContext aggregationClause() {
35790 			return getRuleContext(AggregationClauseContext.class,0);
35791 		}
35792 		public SelectContext(ParserRuleContext parent, int invokingState) {
35793 			super(parent, invokingState);
35794 		}
35795 		@Override public int getRuleIndex() { return RULE_select; }
35796 		@Override
35797 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35798 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelect(this);
35799 			else return visitor.visitChildren(this);
35800 		}
35801 	}
35802 
35803 	public final SelectContext select() throws RecognitionException {
35804 		SelectContext _localctx = new SelectContext(_ctx, getState());
35805 		enterRule(_localctx, 686, RULE_select);
35806 		try {
35807 			enterOuterAlt(_localctx, 1);
35808 			{
35809 			setState(4933);
35810 			aggregationClause();
35811 			}
35812 		}
35813 		catch (RecognitionException re) {
35814 			_localctx.exception = re;
35815 			_errHandler.reportError(this, re);
35816 			_errHandler.recover(this, re);
35817 		}
35818 		finally {
35819 			exitRule();
35820 		}
35821 		return _localctx;
35822 	}
35823 
35824 	public static class AggregationClauseContext extends ParserRuleContext {
35825 		public List<SelectClauseContext> selectClause() {
35826 			return getRuleContexts(SelectClauseContext.class);
35827 		}
35828 		public SelectClauseContext selectClause(int i) {
35829 			return getRuleContext(SelectClauseContext.class,i);
35830 		}
35831 		public List<TerminalNode> UNION() { return getTokens(SQLServerStatementParser.UNION); }
35832 		public TerminalNode UNION(int i) {
35833 			return getToken(SQLServerStatementParser.UNION, i);
35834 		}
35835 		public List<TerminalNode> EXCEPT() { return getTokens(SQLServerStatementParser.EXCEPT); }
35836 		public TerminalNode EXCEPT(int i) {
35837 			return getToken(SQLServerStatementParser.EXCEPT, i);
35838 		}
35839 		public List<TerminalNode> INTERSECT() { return getTokens(SQLServerStatementParser.INTERSECT); }
35840 		public TerminalNode INTERSECT(int i) {
35841 			return getToken(SQLServerStatementParser.INTERSECT, i);
35842 		}
35843 		public List<TerminalNode> ALL() { return getTokens(SQLServerStatementParser.ALL); }
35844 		public TerminalNode ALL(int i) {
35845 			return getToken(SQLServerStatementParser.ALL, i);
35846 		}
35847 		public AggregationClauseContext(ParserRuleContext parent, int invokingState) {
35848 			super(parent, invokingState);
35849 		}
35850 		@Override public int getRuleIndex() { return RULE_aggregationClause; }
35851 		@Override
35852 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35853 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationClause(this);
35854 			else return visitor.visitChildren(this);
35855 		}
35856 	}
35857 
35858 	public final AggregationClauseContext aggregationClause() throws RecognitionException {
35859 		AggregationClauseContext _localctx = new AggregationClauseContext(_ctx, getState());
35860 		enterRule(_localctx, 688, RULE_aggregationClause);
35861 		int _la;
35862 		try {
35863 			enterOuterAlt(_localctx, 1);
35864 			{
35865 			setState(4935);
35866 			selectClause();
35867 			setState(4947);
35868 			_errHandler.sync(this);
35869 			_la = _input.LA(1);
35870 			while (_la==UNION || _la==EXCEPT || _la==INTERSECT) {
35871 				{
35872 				{
35873 				setState(4942);
35874 				_errHandler.sync(this);
35875 				switch (_input.LA(1)) {
35876 				case UNION:
35877 					{
35878 					setState(4936);
35879 					match(UNION);
35880 					setState(4938);
35881 					_errHandler.sync(this);
35882 					_la = _input.LA(1);
35883 					if (_la==ALL) {
35884 						{
35885 						setState(4937);
35886 						match(ALL);
35887 						}
35888 					}
35889 
35890 					}
35891 					break;
35892 				case EXCEPT:
35893 					{
35894 					setState(4940);
35895 					match(EXCEPT);
35896 					}
35897 					break;
35898 				case INTERSECT:
35899 					{
35900 					setState(4941);
35901 					match(INTERSECT);
35902 					}
35903 					break;
35904 				default:
35905 					throw new NoViableAltException(this);
35906 				}
35907 				setState(4944);
35908 				selectClause();
35909 				}
35910 				}
35911 				setState(4949);
35912 				_errHandler.sync(this);
35913 				_la = _input.LA(1);
35914 			}
35915 			}
35916 		}
35917 		catch (RecognitionException re) {
35918 			_localctx.exception = re;
35919 			_errHandler.reportError(this, re);
35920 			_errHandler.recover(this, re);
35921 		}
35922 		finally {
35923 			exitRule();
35924 		}
35925 		return _localctx;
35926 	}
35927 
35928 	public static class SelectClauseContext extends ParserRuleContext {
35929 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
35930 		public ProjectionsContext projections() {
35931 			return getRuleContext(ProjectionsContext.class,0);
35932 		}
35933 		public SelectWithClauseContext selectWithClause() {
35934 			return getRuleContext(SelectWithClauseContext.class,0);
35935 		}
35936 		public DuplicateSpecificationContext duplicateSpecification() {
35937 			return getRuleContext(DuplicateSpecificationContext.class,0);
35938 		}
35939 		public FromClauseContext fromClause() {
35940 			return getRuleContext(FromClauseContext.class,0);
35941 		}
35942 		public WhereClauseContext whereClause() {
35943 			return getRuleContext(WhereClauseContext.class,0);
35944 		}
35945 		public GroupByClauseContext groupByClause() {
35946 			return getRuleContext(GroupByClauseContext.class,0);
35947 		}
35948 		public HavingClauseContext havingClause() {
35949 			return getRuleContext(HavingClauseContext.class,0);
35950 		}
35951 		public OrderByClauseContext orderByClause() {
35952 			return getRuleContext(OrderByClauseContext.class,0);
35953 		}
35954 		public ForClauseContext forClause() {
35955 			return getRuleContext(ForClauseContext.class,0);
35956 		}
35957 		public SelectClauseContext(ParserRuleContext parent, int invokingState) {
35958 			super(parent, invokingState);
35959 		}
35960 		@Override public int getRuleIndex() { return RULE_selectClause; }
35961 		@Override
35962 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35963 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelectClause(this);
35964 			else return visitor.visitChildren(this);
35965 		}
35966 	}
35967 
35968 	public final SelectClauseContext selectClause() throws RecognitionException {
35969 		SelectClauseContext _localctx = new SelectClauseContext(_ctx, getState());
35970 		enterRule(_localctx, 690, RULE_selectClause);
35971 		int _la;
35972 		try {
35973 			enterOuterAlt(_localctx, 1);
35974 			{
35975 			setState(4951);
35976 			_errHandler.sync(this);
35977 			_la = _input.LA(1);
35978 			if (_la==WITH) {
35979 				{
35980 				setState(4950);
35981 				selectWithClause();
35982 				}
35983 			}
35984 
35985 			setState(4953);
35986 			match(SELECT);
35987 			setState(4955);
35988 			_errHandler.sync(this);
35989 			_la = _input.LA(1);
35990 			if (_la==DISTINCT || _la==ALL) {
35991 				{
35992 				setState(4954);
35993 				duplicateSpecification();
35994 				}
35995 			}
35996 
35997 			setState(4957);
35998 			projections();
35999 			setState(4959);
36000 			_errHandler.sync(this);
36001 			_la = _input.LA(1);
36002 			if (_la==FROM) {
36003 				{
36004 				setState(4958);
36005 				fromClause();
36006 				}
36007 			}
36008 
36009 			setState(4962);
36010 			_errHandler.sync(this);
36011 			_la = _input.LA(1);
36012 			if (_la==WHERE) {
36013 				{
36014 				setState(4961);
36015 				whereClause();
36016 				}
36017 			}
36018 
36019 			setState(4965);
36020 			_errHandler.sync(this);
36021 			_la = _input.LA(1);
36022 			if (_la==GROUP) {
36023 				{
36024 				setState(4964);
36025 				groupByClause();
36026 				}
36027 			}
36028 
36029 			setState(4968);
36030 			_errHandler.sync(this);
36031 			_la = _input.LA(1);
36032 			if (_la==HAVING) {
36033 				{
36034 				setState(4967);
36035 				havingClause();
36036 				}
36037 			}
36038 
36039 			setState(4971);
36040 			_errHandler.sync(this);
36041 			_la = _input.LA(1);
36042 			if (_la==ORDER) {
36043 				{
36044 				setState(4970);
36045 				orderByClause();
36046 				}
36047 			}
36048 
36049 			setState(4974);
36050 			_errHandler.sync(this);
36051 			switch ( getInterpreter().adaptivePredict(_input,553,_ctx) ) {
36052 			case 1:
36053 				{
36054 				setState(4973);
36055 				forClause();
36056 				}
36057 				break;
36058 			}
36059 			}
36060 		}
36061 		catch (RecognitionException re) {
36062 			_localctx.exception = re;
36063 			_errHandler.reportError(this, re);
36064 			_errHandler.recover(this, re);
36065 		}
36066 		finally {
36067 			exitRule();
36068 		}
36069 		return _localctx;
36070 	}
36071 
36072 	public static class DuplicateSpecificationContext extends ParserRuleContext {
36073 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
36074 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
36075 		public DuplicateSpecificationContext(ParserRuleContext parent, int invokingState) {
36076 			super(parent, invokingState);
36077 		}
36078 		@Override public int getRuleIndex() { return RULE_duplicateSpecification; }
36079 		@Override
36080 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36081 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDuplicateSpecification(this);
36082 			else return visitor.visitChildren(this);
36083 		}
36084 	}
36085 
36086 	public final DuplicateSpecificationContext duplicateSpecification() throws RecognitionException {
36087 		DuplicateSpecificationContext _localctx = new DuplicateSpecificationContext(_ctx, getState());
36088 		enterRule(_localctx, 692, RULE_duplicateSpecification);
36089 		int _la;
36090 		try {
36091 			enterOuterAlt(_localctx, 1);
36092 			{
36093 			setState(4976);
36094 			_la = _input.LA(1);
36095 			if ( !(_la==DISTINCT || _la==ALL) ) {
36096 			_errHandler.recoverInline(this);
36097 			}
36098 			else {
36099 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
36100 				_errHandler.reportMatch(this);
36101 				consume();
36102 			}
36103 			}
36104 		}
36105 		catch (RecognitionException re) {
36106 			_localctx.exception = re;
36107 			_errHandler.reportError(this, re);
36108 			_errHandler.recover(this, re);
36109 		}
36110 		finally {
36111 			exitRule();
36112 		}
36113 		return _localctx;
36114 	}
36115 
36116 	public static class ProjectionsContext extends ParserRuleContext {
36117 		public UnqualifiedShorthandContext unqualifiedShorthand() {
36118 			return getRuleContext(UnqualifiedShorthandContext.class,0);
36119 		}
36120 		public List<ProjectionContext> projection() {
36121 			return getRuleContexts(ProjectionContext.class);
36122 		}
36123 		public ProjectionContext projection(int i) {
36124 			return getRuleContext(ProjectionContext.class,i);
36125 		}
36126 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36127 		public TerminalNode COMMA_(int i) {
36128 			return getToken(SQLServerStatementParser.COMMA_, i);
36129 		}
36130 		public ProjectionsContext(ParserRuleContext parent, int invokingState) {
36131 			super(parent, invokingState);
36132 		}
36133 		@Override public int getRuleIndex() { return RULE_projections; }
36134 		@Override
36135 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36136 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProjections(this);
36137 			else return visitor.visitChildren(this);
36138 		}
36139 	}
36140 
36141 	public final ProjectionsContext projections() throws RecognitionException {
36142 		ProjectionsContext _localctx = new ProjectionsContext(_ctx, getState());
36143 		enterRule(_localctx, 694, RULE_projections);
36144 		int _la;
36145 		try {
36146 			enterOuterAlt(_localctx, 1);
36147 			{
36148 			setState(4980);
36149 			_errHandler.sync(this);
36150 			switch (_input.LA(1)) {
36151 			case ASTERISK_:
36152 				{
36153 				setState(4978);
36154 				unqualifiedShorthand();
36155 				}
36156 				break;
36157 			case NOT_:
36158 			case TILDE_:
36159 			case PLUS_:
36160 			case MINUS_:
36161 			case LP_:
36162 			case LBE_:
36163 			case QUESTION_:
36164 			case DOLLAR_:
36165 			case TRUNCATE:
36166 			case SCHEMA:
36167 			case FUNCTION:
36168 			case TRIGGER:
36169 			case CASE:
36170 			case CAST:
36171 			case IF:
36172 			case NOT:
36173 			case NULL:
36174 			case TRUE:
36175 			case FALSE:
36176 			case EXISTS:
36177 			case GROUP:
36178 			case LIMIT:
36179 			case OFFSET:
36180 			case SAVEPOINT:
36181 			case BOOLEAN:
36182 			case CHAR:
36183 			case ARRAY:
36184 			case INTERVAL:
36185 			case DATE:
36186 			case TIME:
36187 			case TIMESTAMP:
36188 			case LOCALTIME:
36189 			case LOCALTIMESTAMP:
36190 			case QUARTER:
36191 			case WEEK:
36192 			case DAY:
36193 			case MICROSECOND:
36194 			case MAX:
36195 			case MIN:
36196 			case SUM:
36197 			case COUNT:
36198 			case AVG:
36199 			case ENABLE:
36200 			case DISABLE:
36201 			case INSTANCE:
36202 			case DO:
36203 			case DEFINER:
36204 			case SQL:
36205 			case CASCADED:
36206 			case LOCAL:
36207 			case NEXT:
36208 			case NAME:
36209 			case INTEGER:
36210 			case TYPE:
36211 			case READ_ONLY:
36212 			case DATABASE:
36213 			case DATEPART:
36214 			case PASSWORD:
36215 			case BINARY:
36216 			case HIDDEN_:
36217 			case MOD:
36218 			case PARTITION:
36219 			case PARTITIONS:
36220 			case TOP:
36221 			case ROW:
36222 			case ROWS:
36223 			case XOR:
36224 			case ALWAYS:
36225 			case ROLE:
36226 			case START:
36227 			case ALGORITHM:
36228 			case AUTO:
36229 			case BLOCKERS:
36230 			case CLUSTERED:
36231 			case NONCLUSTERED:
36232 			case COLUMNSTORE:
36233 			case CONTENT:
36234 			case CONVERT:
36235 			case YEARS:
36236 			case MONTHS:
36237 			case WEEKS:
36238 			case DAYS:
36239 			case MINUTES:
36240 			case DENY:
36241 			case DETERMINISTIC:
36242 			case DISTRIBUTION:
36243 			case DOCUMENT:
36244 			case DURABILITY:
36245 			case ENCRYPTED:
36246 			case FILESTREAM:
36247 			case FILETABLE:
36248 			case FILLFACTOR:
36249 			case FOLLOWING:
36250 			case HASH:
36251 			case HEAP:
36252 			case INBOUND:
36253 			case OUTBOUND:
36254 			case UNBOUNDED:
36255 			case INFINITE:
36256 			case LOGIN:
36257 			case MASKED:
36258 			case MAXDOP:
36259 			case MOVE:
36260 			case NOCHECK:
36261 			case OBJECT:
36262 			case OFF:
36263 			case ONLINE:
36264 			case OVER:
36265 			case PAGE:
36266 			case PAUSED:
36267 			case PERIOD:
36268 			case PERSISTED:
36269 			case PRECEDING:
36270 			case RANDOMIZED:
36271 			case RANGE:
36272 			case REBUILD:
36273 			case REPLICATE:
36274 			case REPLICATION:
36275 			case RESUMABLE:
36276 			case ROWGUIDCOL:
36277 			case SAVE:
36278 			case SELF:
36279 			case SPARSE:
36280 			case SWITCH:
36281 			case TRAN:
36282 			case TRANCOUNT:
36283 			case CONTROL:
36284 			case CONCAT:
36285 			case TAKE:
36286 			case OWNERSHIP:
36287 			case DEFINITION:
36288 			case APPLICATION:
36289 			case ASSEMBLY:
36290 			case SYMMETRIC:
36291 			case ASYMMETRIC:
36292 			case SERVER:
36293 			case RECEIVE:
36294 			case CHANGE:
36295 			case TRACE:
36296 			case TRACKING:
36297 			case RESOURCES:
36298 			case SETTINGS:
36299 			case STATE:
36300 			case AVAILABILITY:
36301 			case CREDENTIAL:
36302 			case ENDPOINT:
36303 			case EVENT:
36304 			case NOTIFICATION:
36305 			case LINKED:
36306 			case AUDIT:
36307 			case DDL:
36308 			case XML:
36309 			case IMPERSONATE:
36310 			case SECURABLES:
36311 			case AUTHENTICATE:
36312 			case EXTERNAL:
36313 			case ACCESS:
36314 			case ADMINISTER:
36315 			case BULK:
36316 			case OPERATIONS:
36317 			case UNSAFE:
36318 			case SHUTDOWN:
36319 			case SCOPED:
36320 			case CONFIGURATION:
36321 			case DATASPACE:
36322 			case SERVICE:
36323 			case CERTIFICATE:
36324 			case CONTRACT:
36325 			case ENCRYPTION:
36326 			case MASTER:
36327 			case DATA:
36328 			case SOURCE:
36329 			case FILE:
36330 			case FORMAT:
36331 			case LIBRARY:
36332 			case FULLTEXT:
36333 			case MASK:
36334 			case UNMASK:
36335 			case MESSAGE:
36336 			case REMOTE:
36337 			case BINDING:
36338 			case ROUTE:
36339 			case SECURITY:
36340 			case POLICY:
36341 			case AGGREGATE:
36342 			case QUEUE:
36343 			case RULE:
36344 			case SYNONYM:
36345 			case COLLECTION:
36346 			case SCRIPT:
36347 			case KILL:
36348 			case BACKUP:
36349 			case LOG:
36350 			case SHOWPLAN:
36351 			case SUBSCRIBE:
36352 			case QUERY:
36353 			case NOTIFICATIONS:
36354 			case CHECKPOINT:
36355 			case SEQUENCE:
36356 			case ABORT_AFTER_WAIT:
36357 			case ALLOW_PAGE_LOCKS:
36358 			case ALLOW_ROW_LOCKS:
36359 			case ALL_SPARSE_COLUMNS:
36360 			case BUCKET_COUNT:
36361 			case COLUMNSTORE_ARCHIVE:
36362 			case COLUMN_ENCRYPTION_KEY:
36363 			case COLUMN_SET:
36364 			case COMPRESSION_DELAY:
36365 			case DATABASE_DEAULT:
36366 			case DATA_COMPRESSION:
36367 			case DATA_CONSISTENCY_CHECK:
36368 			case ENCRYPTION_TYPE:
36369 			case SYSTEM_TIME:
36370 			case SYSTEM_VERSIONING:
36371 			case TEXTIMAGE_ON:
36372 			case WAIT_AT_LOW_PRIORITY:
36373 			case STATISTICS_INCREMENTAL:
36374 			case STATISTICS_NORECOMPUTE:
36375 			case ROUND_ROBIN:
36376 			case SCHEMA_AND_DATA:
36377 			case SCHEMA_ONLY:
36378 			case SORT_IN_TEMPDB:
36379 			case IGNORE_DUP_KEY:
36380 			case IMPLICIT_TRANSACTIONS:
36381 			case MAX_DURATION:
36382 			case MEMORY_OPTIMIZED:
36383 			case MIGRATION_STATE:
36384 			case PAD_INDEX:
36385 			case REMOTE_DATA_ARCHIVE:
36386 			case FILESTREAM_ON:
36387 			case FILETABLE_COLLATE_FILENAME:
36388 			case FILETABLE_DIRECTORY:
36389 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
36390 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
36391 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
36392 			case FILTER_PREDICATE:
36393 			case HISTORY_RETENTION_PERIOD:
36394 			case HISTORY_TABLE:
36395 			case LOCK_ESCALATION:
36396 			case DROP_EXISTING:
36397 			case ROW_NUMBER:
36398 			case FIRST:
36399 			case DATETIME2:
36400 			case OUTPUT:
36401 			case INSERTED:
36402 			case DELETED:
36403 			case FILENAME:
36404 			case MAXSIZE:
36405 			case FILEGROWTH:
36406 			case UNLIMITED:
36407 			case KB:
36408 			case MB:
36409 			case GB:
36410 			case TB:
36411 			case MEMORY_OPTIMIZED_DATA:
36412 			case FILEGROUP:
36413 			case NON_TRANSACTED_ACCESS:
36414 			case DB_CHAINING:
36415 			case TRUSTWORTHY:
36416 			case FORWARD_ONLY:
36417 			case KEYSET:
36418 			case FAST_FORWARD:
36419 			case SCROLL_LOCKS:
36420 			case OPTIMISTIC:
36421 			case TYPE_WARNING:
36422 			case SCHEMABINDING:
36423 			case CALLER:
36424 			case OWNER:
36425 			case SNAPSHOT:
36426 			case REPEATABLE:
36427 			case SERIALIZABLE:
36428 			case NATIVE_COMPILATION:
36429 			case VIEW_METADATA:
36430 			case INSTEAD:
36431 			case APPEND:
36432 			case INCREMENT:
36433 			case CACHE:
36434 			case MINVALUE:
36435 			case MAXVALUE:
36436 			case RESTART:
36437 			case LOB_COMPACTION:
36438 			case COMPRESS_ALL_ROW_GROUPS:
36439 			case REORGANIZE:
36440 			case RESUME:
36441 			case PAUSE:
36442 			case ABORT:
36443 			case ACCELERATED_DATABASE_RECOVERY:
36444 			case PERSISTENT_VERSION_STORE_FILEGROUP:
36445 			case IMMEDIATE:
36446 			case NO_WAIT:
36447 			case TARGET_RECOVERY_TIME:
36448 			case SECONDS:
36449 			case HONOR_BROKER_PRIORITY:
36450 			case ERROR_BROKER_CONVERSATIONS:
36451 			case NEW_BROKER:
36452 			case DISABLE_BROKER:
36453 			case ENABLE_BROKER:
36454 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
36455 			case READ_COMMITTED_SNAPSHOT:
36456 			case ALLOW_SNAPSHOT_ISOLATION:
36457 			case RECURSIVE_TRIGGERS:
36458 			case QUOTED_IDENTIFIER:
36459 			case NUMERIC_ROUNDABORT:
36460 			case CONCAT_NULL_YIELDS_NULL:
36461 			case COMPATIBILITY_LEVEL:
36462 			case ARITHABORT:
36463 			case ANSI_WARNINGS:
36464 			case ANSI_PADDING:
36465 			case ANSI_NULLS:
36466 			case ANSI_NULL_DEFAULT:
36467 			case PAGE_VERIFY:
36468 			case CHECKSUM:
36469 			case TORN_PAGE_DETECTION:
36470 			case BULK_LOGGED:
36471 			case RECOVERY:
36472 			case TOTAL_EXECUTION_CPU_TIME_MS:
36473 			case TOTAL_COMPILE_CPU_TIME_MS:
36474 			case STALE_CAPTURE_POLICY_THRESHOLD:
36475 			case EXECUTION_COUNT:
36476 			case QUERY_CAPTURE_POLICY:
36477 			case WAIT_STATS_CAPTURE_MODE:
36478 			case MAX_PLANS_PER_QUERY:
36479 			case QUERY_CAPTURE_MODE:
36480 			case SIZE_BASED_CLEANUP_MODE:
36481 			case INTERVAL_LENGTH_MINUTES:
36482 			case MAX_STORAGE_SIZE_MB:
36483 			case DATA_FLUSH_INTERVAL_SECONDS:
36484 			case CLEANUP_POLICY:
36485 			case CUSTOM:
36486 			case STALE_QUERY_THRESHOLD_DAYS:
36487 			case OPERATION_MODE:
36488 			case QUERY_STORE:
36489 			case CURSOR_DEFAULT:
36490 			case GLOBAL:
36491 			case CURSOR_CLOSE_ON_COMMIT:
36492 			case HOURS:
36493 			case CHANGE_RETENTION:
36494 			case AUTO_CLEANUP:
36495 			case CHANGE_TRACKING:
36496 			case AUTOMATIC_TUNING:
36497 			case FORCE_LAST_GOOD_PLAN:
36498 			case AUTO_UPDATE_STATISTICS_ASYNC:
36499 			case AUTO_UPDATE_STATISTICS:
36500 			case AUTO_SHRINK:
36501 			case AUTO_CREATE_STATISTICS:
36502 			case INCREMENTAL:
36503 			case AUTO_CLOSE:
36504 			case DATA_RETENTION:
36505 			case TEMPORAL_HISTORY_RETENTION:
36506 			case EDITION:
36507 			case MIXED_PAGE_ALLOCATION:
36508 			case DISABLED:
36509 			case ALLOWED:
36510 			case HADR:
36511 			case MULTI_USER:
36512 			case RESTRICTED_USER:
36513 			case SINGLE_USER:
36514 			case OFFLINE:
36515 			case EMERGENCY:
36516 			case SUSPEND:
36517 			case DATE_CORRELATION_OPTIMIZATION:
36518 			case ELASTIC_POOL:
36519 			case SERVICE_OBJECTIVE:
36520 			case DATABASE_NAME:
36521 			case ALLOW_CONNECTIONS:
36522 			case GEO:
36523 			case NAMED:
36524 			case DATEFIRST:
36525 			case BACKUP_STORAGE_REDUNDANCY:
36526 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
36527 			case SECONDARY:
36528 			case FAILOVER:
36529 			case DEFAULT_FULLTEXT_LANGUAGE:
36530 			case DEFAULT_LANGUAGE:
36531 			case INLINE:
36532 			case NESTED_TRIGGERS:
36533 			case TRANSFORM_NOISE_WORDS:
36534 			case TWO_DIGIT_YEAR_CUTOFF:
36535 			case PERSISTENT_LOG_BUFFER:
36536 			case DIRECTORY_NAME:
36537 			case DATEFORMAT:
36538 			case DELAYED_DURABILITY:
36539 			case AUTHORIZATION:
36540 			case TRANSFER:
36541 			case SEARCH:
36542 			case MEMBER:
36543 			case IDENTIFIER_:
36544 			case DELIMITED_IDENTIFIER_:
36545 			case STRING_:
36546 			case NUMBER_:
36547 			case HEX_DIGIT_:
36548 			case BIT_NUM_:
36549 			case NCHAR_TEXT:
36550 				{
36551 				setState(4979);
36552 				projection();
36553 				}
36554 				break;
36555 			default:
36556 				throw new NoViableAltException(this);
36557 			}
36558 			setState(4986);
36559 			_errHandler.sync(this);
36560 			_la = _input.LA(1);
36561 			while (_la==COMMA_) {
36562 				{
36563 				{
36564 				setState(4982);
36565 				match(COMMA_);
36566 				setState(4983);
36567 				projection();
36568 				}
36569 				}
36570 				setState(4988);
36571 				_errHandler.sync(this);
36572 				_la = _input.LA(1);
36573 			}
36574 			}
36575 		}
36576 		catch (RecognitionException re) {
36577 			_localctx.exception = re;
36578 			_errHandler.reportError(this, re);
36579 			_errHandler.recover(this, re);
36580 		}
36581 		finally {
36582 			exitRule();
36583 		}
36584 		return _localctx;
36585 	}
36586 
36587 	public static class ProjectionContext extends ParserRuleContext {
36588 		public TopContext top() {
36589 			return getRuleContext(TopContext.class,0);
36590 		}
36591 		public ColumnNameContext columnName() {
36592 			return getRuleContext(ColumnNameContext.class,0);
36593 		}
36594 		public ExprContext expr() {
36595 			return getRuleContext(ExprContext.class,0);
36596 		}
36597 		public AliasContext alias() {
36598 			return getRuleContext(AliasContext.class,0);
36599 		}
36600 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
36601 		public QualifiedShorthandContext qualifiedShorthand() {
36602 			return getRuleContext(QualifiedShorthandContext.class,0);
36603 		}
36604 		public ProjectionContext(ParserRuleContext parent, int invokingState) {
36605 			super(parent, invokingState);
36606 		}
36607 		@Override public int getRuleIndex() { return RULE_projection; }
36608 		@Override
36609 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36610 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProjection(this);
36611 			else return visitor.visitChildren(this);
36612 		}
36613 	}
36614 
36615 	public final ProjectionContext projection() throws RecognitionException {
36616 		ProjectionContext _localctx = new ProjectionContext(_ctx, getState());
36617 		enterRule(_localctx, 696, RULE_projection);
36618 		int _la;
36619 		try {
36620 			setState(5001);
36621 			_errHandler.sync(this);
36622 			switch ( getInterpreter().adaptivePredict(_input,559,_ctx) ) {
36623 			case 1:
36624 				enterOuterAlt(_localctx, 1);
36625 				{
36626 				setState(4992);
36627 				_errHandler.sync(this);
36628 				switch ( getInterpreter().adaptivePredict(_input,556,_ctx) ) {
36629 				case 1:
36630 					{
36631 					setState(4989);
36632 					top();
36633 					}
36634 					break;
36635 				case 2:
36636 					{
36637 					setState(4990);
36638 					columnName();
36639 					}
36640 					break;
36641 				case 3:
36642 					{
36643 					setState(4991);
36644 					expr(0);
36645 					}
36646 					break;
36647 				}
36648 				setState(4998);
36649 				_errHandler.sync(this);
36650 				switch ( getInterpreter().adaptivePredict(_input,558,_ctx) ) {
36651 				case 1:
36652 					{
36653 					setState(4995);
36654 					_errHandler.sync(this);
36655 					_la = _input.LA(1);
36656 					if (_la==AS) {
36657 						{
36658 						setState(4994);
36659 						match(AS);
36660 						}
36661 					}
36662 
36663 					setState(4997);
36664 					alias();
36665 					}
36666 					break;
36667 				}
36668 				}
36669 				break;
36670 			case 2:
36671 				enterOuterAlt(_localctx, 2);
36672 				{
36673 				setState(5000);
36674 				qualifiedShorthand();
36675 				}
36676 				break;
36677 			}
36678 		}
36679 		catch (RecognitionException re) {
36680 			_localctx.exception = re;
36681 			_errHandler.reportError(this, re);
36682 			_errHandler.recover(this, re);
36683 		}
36684 		finally {
36685 			exitRule();
36686 		}
36687 		return _localctx;
36688 	}
36689 
36690 	public static class TopContext extends ParserRuleContext {
36691 		public TerminalNode TOP() { return getToken(SQLServerStatementParser.TOP, 0); }
36692 		public TopNumContext topNum() {
36693 			return getRuleContext(TopNumContext.class,0);
36694 		}
36695 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
36696 		public TerminalNode LP_(int i) {
36697 			return getToken(SQLServerStatementParser.LP_, i);
36698 		}
36699 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
36700 		public TerminalNode RP_(int i) {
36701 			return getToken(SQLServerStatementParser.RP_, i);
36702 		}
36703 		public TerminalNode PERCENT() { return getToken(SQLServerStatementParser.PERCENT, 0); }
36704 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
36705 		public TerminalNode TIES() { return getToken(SQLServerStatementParser.TIES, 0); }
36706 		public TerminalNode ROW_NUMBER() { return getToken(SQLServerStatementParser.ROW_NUMBER, 0); }
36707 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
36708 		public OrderByClauseContext orderByClause() {
36709 			return getRuleContext(OrderByClauseContext.class,0);
36710 		}
36711 		public TopContext(ParserRuleContext parent, int invokingState) {
36712 			super(parent, invokingState);
36713 		}
36714 		@Override public int getRuleIndex() { return RULE_top; }
36715 		@Override
36716 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36717 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTop(this);
36718 			else return visitor.visitChildren(this);
36719 		}
36720 	}
36721 
36722 	public final TopContext top() throws RecognitionException {
36723 		TopContext _localctx = new TopContext(_ctx, getState());
36724 		enterRule(_localctx, 698, RULE_top);
36725 		int _la;
36726 		try {
36727 			enterOuterAlt(_localctx, 1);
36728 			{
36729 			setState(5003);
36730 			match(TOP);
36731 			setState(5005);
36732 			_errHandler.sync(this);
36733 			_la = _input.LA(1);
36734 			if (_la==LP_) {
36735 				{
36736 				setState(5004);
36737 				match(LP_);
36738 				}
36739 			}
36740 
36741 			setState(5007);
36742 			topNum();
36743 			setState(5009);
36744 			_errHandler.sync(this);
36745 			switch ( getInterpreter().adaptivePredict(_input,561,_ctx) ) {
36746 			case 1:
36747 				{
36748 				setState(5008);
36749 				match(RP_);
36750 				}
36751 				break;
36752 			}
36753 			setState(5012);
36754 			_errHandler.sync(this);
36755 			_la = _input.LA(1);
36756 			if (_la==PERCENT) {
36757 				{
36758 				setState(5011);
36759 				match(PERCENT);
36760 				}
36761 			}
36762 
36763 			setState(5016);
36764 			_errHandler.sync(this);
36765 			switch ( getInterpreter().adaptivePredict(_input,563,_ctx) ) {
36766 			case 1:
36767 				{
36768 				setState(5014);
36769 				match(WITH);
36770 				setState(5015);
36771 				match(TIES);
36772 				}
36773 				break;
36774 			}
36775 			setState(5026);
36776 			_errHandler.sync(this);
36777 			switch ( getInterpreter().adaptivePredict(_input,564,_ctx) ) {
36778 			case 1:
36779 				{
36780 				setState(5018);
36781 				match(ROW_NUMBER);
36782 				setState(5019);
36783 				match(LP_);
36784 				setState(5020);
36785 				match(RP_);
36786 				setState(5021);
36787 				match(OVER);
36788 				setState(5022);
36789 				match(LP_);
36790 				setState(5023);
36791 				orderByClause();
36792 				setState(5024);
36793 				match(RP_);
36794 				}
36795 				break;
36796 			}
36797 			}
36798 		}
36799 		catch (RecognitionException re) {
36800 			_localctx.exception = re;
36801 			_errHandler.reportError(this, re);
36802 			_errHandler.recover(this, re);
36803 		}
36804 		finally {
36805 			exitRule();
36806 		}
36807 		return _localctx;
36808 	}
36809 
36810 	public static class TopNumContext extends ParserRuleContext {
36811 		public NumberLiteralsContext numberLiterals() {
36812 			return getRuleContext(NumberLiteralsContext.class,0);
36813 		}
36814 		public ParameterMarkerContext parameterMarker() {
36815 			return getRuleContext(ParameterMarkerContext.class,0);
36816 		}
36817 		public TopNumContext(ParserRuleContext parent, int invokingState) {
36818 			super(parent, invokingState);
36819 		}
36820 		@Override public int getRuleIndex() { return RULE_topNum; }
36821 		@Override
36822 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36823 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTopNum(this);
36824 			else return visitor.visitChildren(this);
36825 		}
36826 	}
36827 
36828 	public final TopNumContext topNum() throws RecognitionException {
36829 		TopNumContext _localctx = new TopNumContext(_ctx, getState());
36830 		enterRule(_localctx, 700, RULE_topNum);
36831 		try {
36832 			setState(5030);
36833 			_errHandler.sync(this);
36834 			switch (_input.LA(1)) {
36835 			case PLUS_:
36836 			case MINUS_:
36837 			case NUMBER_:
36838 				enterOuterAlt(_localctx, 1);
36839 				{
36840 				setState(5028);
36841 				numberLiterals();
36842 				}
36843 				break;
36844 			case QUESTION_:
36845 				enterOuterAlt(_localctx, 2);
36846 				{
36847 				setState(5029);
36848 				parameterMarker();
36849 				}
36850 				break;
36851 			default:
36852 				throw new NoViableAltException(this);
36853 			}
36854 		}
36855 		catch (RecognitionException re) {
36856 			_localctx.exception = re;
36857 			_errHandler.reportError(this, re);
36858 			_errHandler.recover(this, re);
36859 		}
36860 		finally {
36861 			exitRule();
36862 		}
36863 		return _localctx;
36864 	}
36865 
36866 	public static class UnqualifiedShorthandContext extends ParserRuleContext {
36867 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
36868 		public UnqualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
36869 			super(parent, invokingState);
36870 		}
36871 		@Override public int getRuleIndex() { return RULE_unqualifiedShorthand; }
36872 		@Override
36873 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36874 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUnqualifiedShorthand(this);
36875 			else return visitor.visitChildren(this);
36876 		}
36877 	}
36878 
36879 	public final UnqualifiedShorthandContext unqualifiedShorthand() throws RecognitionException {
36880 		UnqualifiedShorthandContext _localctx = new UnqualifiedShorthandContext(_ctx, getState());
36881 		enterRule(_localctx, 702, RULE_unqualifiedShorthand);
36882 		try {
36883 			enterOuterAlt(_localctx, 1);
36884 			{
36885 			setState(5032);
36886 			match(ASTERISK_);
36887 			}
36888 		}
36889 		catch (RecognitionException re) {
36890 			_localctx.exception = re;
36891 			_errHandler.reportError(this, re);
36892 			_errHandler.recover(this, re);
36893 		}
36894 		finally {
36895 			exitRule();
36896 		}
36897 		return _localctx;
36898 	}
36899 
36900 	public static class QualifiedShorthandContext extends ParserRuleContext {
36901 		public IdentifierContext identifier() {
36902 			return getRuleContext(IdentifierContext.class,0);
36903 		}
36904 		public TerminalNode DOT_ASTERISK_() { return getToken(SQLServerStatementParser.DOT_ASTERISK_, 0); }
36905 		public QualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
36906 			super(parent, invokingState);
36907 		}
36908 		@Override public int getRuleIndex() { return RULE_qualifiedShorthand; }
36909 		@Override
36910 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36911 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQualifiedShorthand(this);
36912 			else return visitor.visitChildren(this);
36913 		}
36914 	}
36915 
36916 	public final QualifiedShorthandContext qualifiedShorthand() throws RecognitionException {
36917 		QualifiedShorthandContext _localctx = new QualifiedShorthandContext(_ctx, getState());
36918 		enterRule(_localctx, 704, RULE_qualifiedShorthand);
36919 		try {
36920 			enterOuterAlt(_localctx, 1);
36921 			{
36922 			setState(5034);
36923 			identifier();
36924 			setState(5035);
36925 			match(DOT_ASTERISK_);
36926 			}
36927 		}
36928 		catch (RecognitionException re) {
36929 			_localctx.exception = re;
36930 			_errHandler.reportError(this, re);
36931 			_errHandler.recover(this, re);
36932 		}
36933 		finally {
36934 			exitRule();
36935 		}
36936 		return _localctx;
36937 	}
36938 
36939 	public static class FromClauseContext extends ParserRuleContext {
36940 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
36941 		public TableReferencesContext tableReferences() {
36942 			return getRuleContext(TableReferencesContext.class,0);
36943 		}
36944 		public FromClauseContext(ParserRuleContext parent, int invokingState) {
36945 			super(parent, invokingState);
36946 		}
36947 		@Override public int getRuleIndex() { return RULE_fromClause; }
36948 		@Override
36949 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36950 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFromClause(this);
36951 			else return visitor.visitChildren(this);
36952 		}
36953 	}
36954 
36955 	public final FromClauseContext fromClause() throws RecognitionException {
36956 		FromClauseContext _localctx = new FromClauseContext(_ctx, getState());
36957 		enterRule(_localctx, 706, RULE_fromClause);
36958 		try {
36959 			enterOuterAlt(_localctx, 1);
36960 			{
36961 			setState(5037);
36962 			match(FROM);
36963 			setState(5038);
36964 			tableReferences();
36965 			}
36966 		}
36967 		catch (RecognitionException re) {
36968 			_localctx.exception = re;
36969 			_errHandler.reportError(this, re);
36970 			_errHandler.recover(this, re);
36971 		}
36972 		finally {
36973 			exitRule();
36974 		}
36975 		return _localctx;
36976 	}
36977 
36978 	public static class TableReferencesContext extends ParserRuleContext {
36979 		public List<TableReferenceContext> tableReference() {
36980 			return getRuleContexts(TableReferenceContext.class);
36981 		}
36982 		public TableReferenceContext tableReference(int i) {
36983 			return getRuleContext(TableReferenceContext.class,i);
36984 		}
36985 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36986 		public TerminalNode COMMA_(int i) {
36987 			return getToken(SQLServerStatementParser.COMMA_, i);
36988 		}
36989 		public TableReferencesContext(ParserRuleContext parent, int invokingState) {
36990 			super(parent, invokingState);
36991 		}
36992 		@Override public int getRuleIndex() { return RULE_tableReferences; }
36993 		@Override
36994 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36995 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableReferences(this);
36996 			else return visitor.visitChildren(this);
36997 		}
36998 	}
36999 
37000 	public final TableReferencesContext tableReferences() throws RecognitionException {
37001 		TableReferencesContext _localctx = new TableReferencesContext(_ctx, getState());
37002 		enterRule(_localctx, 708, RULE_tableReferences);
37003 		int _la;
37004 		try {
37005 			enterOuterAlt(_localctx, 1);
37006 			{
37007 			setState(5040);
37008 			tableReference();
37009 			setState(5045);
37010 			_errHandler.sync(this);
37011 			_la = _input.LA(1);
37012 			while (_la==COMMA_) {
37013 				{
37014 				{
37015 				setState(5041);
37016 				match(COMMA_);
37017 				setState(5042);
37018 				tableReference();
37019 				}
37020 				}
37021 				setState(5047);
37022 				_errHandler.sync(this);
37023 				_la = _input.LA(1);
37024 			}
37025 			}
37026 		}
37027 		catch (RecognitionException re) {
37028 			_localctx.exception = re;
37029 			_errHandler.reportError(this, re);
37030 			_errHandler.recover(this, re);
37031 		}
37032 		finally {
37033 			exitRule();
37034 		}
37035 		return _localctx;
37036 	}
37037 
37038 	public static class TableReferenceContext extends ParserRuleContext {
37039 		public TableFactorContext tableFactor() {
37040 			return getRuleContext(TableFactorContext.class,0);
37041 		}
37042 		public List<JoinedTableContext> joinedTable() {
37043 			return getRuleContexts(JoinedTableContext.class);
37044 		}
37045 		public JoinedTableContext joinedTable(int i) {
37046 			return getRuleContext(JoinedTableContext.class,i);
37047 		}
37048 		public TableReferenceContext(ParserRuleContext parent, int invokingState) {
37049 			super(parent, invokingState);
37050 		}
37051 		@Override public int getRuleIndex() { return RULE_tableReference; }
37052 		@Override
37053 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37054 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableReference(this);
37055 			else return visitor.visitChildren(this);
37056 		}
37057 	}
37058 
37059 	public final TableReferenceContext tableReference() throws RecognitionException {
37060 		TableReferenceContext _localctx = new TableReferenceContext(_ctx, getState());
37061 		enterRule(_localctx, 710, RULE_tableReference);
37062 		int _la;
37063 		try {
37064 			enterOuterAlt(_localctx, 1);
37065 			{
37066 			setState(5048);
37067 			tableFactor();
37068 			setState(5052);
37069 			_errHandler.sync(this);
37070 			_la = _input.LA(1);
37071 			while (((((_la - 85)) & ~0x3f) == 0 && ((1L << (_la - 85)) & ((1L << (NATURAL - 85)) | (1L << (JOIN - 85)) | (1L << (FULL - 85)) | (1L << (INNER - 85)) | (1L << (LEFT - 85)) | (1L << (RIGHT - 85)) | (1L << (CROSS - 85)))) != 0)) {
37072 				{
37073 				{
37074 				setState(5049);
37075 				joinedTable();
37076 				}
37077 				}
37078 				setState(5054);
37079 				_errHandler.sync(this);
37080 				_la = _input.LA(1);
37081 			}
37082 			}
37083 		}
37084 		catch (RecognitionException re) {
37085 			_localctx.exception = re;
37086 			_errHandler.reportError(this, re);
37087 			_errHandler.recover(this, re);
37088 		}
37089 		finally {
37090 			exitRule();
37091 		}
37092 		return _localctx;
37093 	}
37094 
37095 	public static class TableFactorContext extends ParserRuleContext {
37096 		public TableNameContext tableName() {
37097 			return getRuleContext(TableNameContext.class,0);
37098 		}
37099 		public AliasContext alias() {
37100 			return getRuleContext(AliasContext.class,0);
37101 		}
37102 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
37103 		public SubqueryContext subquery() {
37104 			return getRuleContext(SubqueryContext.class,0);
37105 		}
37106 		public ColumnNamesContext columnNames() {
37107 			return getRuleContext(ColumnNamesContext.class,0);
37108 		}
37109 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
37110 		public TableReferencesContext tableReferences() {
37111 			return getRuleContext(TableReferencesContext.class,0);
37112 		}
37113 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
37114 		public TableFactorContext(ParserRuleContext parent, int invokingState) {
37115 			super(parent, invokingState);
37116 		}
37117 		@Override public int getRuleIndex() { return RULE_tableFactor; }
37118 		@Override
37119 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37120 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableFactor(this);
37121 			else return visitor.visitChildren(this);
37122 		}
37123 	}
37124 
37125 	public final TableFactorContext tableFactor() throws RecognitionException {
37126 		TableFactorContext _localctx = new TableFactorContext(_ctx, getState());
37127 		enterRule(_localctx, 712, RULE_tableFactor);
37128 		int _la;
37129 		try {
37130 			setState(5074);
37131 			_errHandler.sync(this);
37132 			switch ( getInterpreter().adaptivePredict(_input,572,_ctx) ) {
37133 			case 1:
37134 				enterOuterAlt(_localctx, 1);
37135 				{
37136 				setState(5055);
37137 				tableName();
37138 				setState(5060);
37139 				_errHandler.sync(this);
37140 				switch ( getInterpreter().adaptivePredict(_input,569,_ctx) ) {
37141 				case 1:
37142 					{
37143 					setState(5057);
37144 					_errHandler.sync(this);
37145 					_la = _input.LA(1);
37146 					if (_la==AS) {
37147 						{
37148 						setState(5056);
37149 						match(AS);
37150 						}
37151 					}
37152 
37153 					setState(5059);
37154 					alias();
37155 					}
37156 					break;
37157 				}
37158 				}
37159 				break;
37160 			case 2:
37161 				enterOuterAlt(_localctx, 2);
37162 				{
37163 				setState(5062);
37164 				subquery();
37165 				setState(5064);
37166 				_errHandler.sync(this);
37167 				_la = _input.LA(1);
37168 				if (_la==AS) {
37169 					{
37170 					setState(5063);
37171 					match(AS);
37172 					}
37173 				}
37174 
37175 				setState(5066);
37176 				alias();
37177 				setState(5068);
37178 				_errHandler.sync(this);
37179 				_la = _input.LA(1);
37180 				if (_la==LP_) {
37181 					{
37182 					setState(5067);
37183 					columnNames();
37184 					}
37185 				}
37186 
37187 				}
37188 				break;
37189 			case 3:
37190 				enterOuterAlt(_localctx, 3);
37191 				{
37192 				setState(5070);
37193 				match(LP_);
37194 				setState(5071);
37195 				tableReferences();
37196 				setState(5072);
37197 				match(RP_);
37198 				}
37199 				break;
37200 			}
37201 		}
37202 		catch (RecognitionException re) {
37203 			_localctx.exception = re;
37204 			_errHandler.reportError(this, re);
37205 			_errHandler.recover(this, re);
37206 		}
37207 		finally {
37208 			exitRule();
37209 		}
37210 		return _localctx;
37211 	}
37212 
37213 	public static class JoinedTableContext extends ParserRuleContext {
37214 		public TableFactorContext tableFactor() {
37215 			return getRuleContext(TableFactorContext.class,0);
37216 		}
37217 		public TerminalNode JOIN() { return getToken(SQLServerStatementParser.JOIN, 0); }
37218 		public TerminalNode NATURAL() { return getToken(SQLServerStatementParser.NATURAL, 0); }
37219 		public JoinSpecificationContext joinSpecification() {
37220 			return getRuleContext(JoinSpecificationContext.class,0);
37221 		}
37222 		public TerminalNode INNER() { return getToken(SQLServerStatementParser.INNER, 0); }
37223 		public TerminalNode CROSS() { return getToken(SQLServerStatementParser.CROSS, 0); }
37224 		public TerminalNode LEFT() { return getToken(SQLServerStatementParser.LEFT, 0); }
37225 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
37226 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
37227 		public TerminalNode OUTER() { return getToken(SQLServerStatementParser.OUTER, 0); }
37228 		public JoinedTableContext(ParserRuleContext parent, int invokingState) {
37229 			super(parent, invokingState);
37230 		}
37231 		@Override public int getRuleIndex() { return RULE_joinedTable; }
37232 		@Override
37233 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37234 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJoinedTable(this);
37235 			else return visitor.visitChildren(this);
37236 		}
37237 	}
37238 
37239 	public final JoinedTableContext joinedTable() throws RecognitionException {
37240 		JoinedTableContext _localctx = new JoinedTableContext(_ctx, getState());
37241 		enterRule(_localctx, 714, RULE_joinedTable);
37242 		int _la;
37243 		try {
37244 			setState(5100);
37245 			_errHandler.sync(this);
37246 			switch ( getInterpreter().adaptivePredict(_input,579,_ctx) ) {
37247 			case 1:
37248 				enterOuterAlt(_localctx, 1);
37249 				{
37250 				setState(5077);
37251 				_errHandler.sync(this);
37252 				_la = _input.LA(1);
37253 				if (_la==NATURAL) {
37254 					{
37255 					setState(5076);
37256 					match(NATURAL);
37257 					}
37258 				}
37259 
37260 				{
37261 				setState(5080);
37262 				_errHandler.sync(this);
37263 				_la = _input.LA(1);
37264 				if (_la==INNER || _la==CROSS) {
37265 					{
37266 					setState(5079);
37267 					_la = _input.LA(1);
37268 					if ( !(_la==INNER || _la==CROSS) ) {
37269 					_errHandler.recoverInline(this);
37270 					}
37271 					else {
37272 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
37273 						_errHandler.reportMatch(this);
37274 						consume();
37275 					}
37276 					}
37277 				}
37278 
37279 				setState(5082);
37280 				match(JOIN);
37281 				}
37282 				setState(5084);
37283 				tableFactor();
37284 				setState(5086);
37285 				_errHandler.sync(this);
37286 				_la = _input.LA(1);
37287 				if (_la==USING || _la==ON) {
37288 					{
37289 					setState(5085);
37290 					joinSpecification();
37291 					}
37292 				}
37293 
37294 				}
37295 				break;
37296 			case 2:
37297 				enterOuterAlt(_localctx, 2);
37298 				{
37299 				setState(5089);
37300 				_errHandler.sync(this);
37301 				_la = _input.LA(1);
37302 				if (_la==NATURAL) {
37303 					{
37304 					setState(5088);
37305 					match(NATURAL);
37306 					}
37307 				}
37308 
37309 				setState(5091);
37310 				_la = _input.LA(1);
37311 				if ( !(((((_la - 87)) & ~0x3f) == 0 && ((1L << (_la - 87)) & ((1L << (FULL - 87)) | (1L << (LEFT - 87)) | (1L << (RIGHT - 87)))) != 0)) ) {
37312 				_errHandler.recoverInline(this);
37313 				}
37314 				else {
37315 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
37316 					_errHandler.reportMatch(this);
37317 					consume();
37318 				}
37319 				setState(5093);
37320 				_errHandler.sync(this);
37321 				_la = _input.LA(1);
37322 				if (_la==OUTER) {
37323 					{
37324 					setState(5092);
37325 					match(OUTER);
37326 					}
37327 				}
37328 
37329 				setState(5095);
37330 				match(JOIN);
37331 				setState(5096);
37332 				tableFactor();
37333 				setState(5098);
37334 				_errHandler.sync(this);
37335 				_la = _input.LA(1);
37336 				if (_la==USING || _la==ON) {
37337 					{
37338 					setState(5097);
37339 					joinSpecification();
37340 					}
37341 				}
37342 
37343 				}
37344 				break;
37345 			}
37346 		}
37347 		catch (RecognitionException re) {
37348 			_localctx.exception = re;
37349 			_errHandler.reportError(this, re);
37350 			_errHandler.recover(this, re);
37351 		}
37352 		finally {
37353 			exitRule();
37354 		}
37355 		return _localctx;
37356 	}
37357 
37358 	public static class JoinSpecificationContext extends ParserRuleContext {
37359 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
37360 		public ExprContext expr() {
37361 			return getRuleContext(ExprContext.class,0);
37362 		}
37363 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
37364 		public ColumnNamesContext columnNames() {
37365 			return getRuleContext(ColumnNamesContext.class,0);
37366 		}
37367 		public JoinSpecificationContext(ParserRuleContext parent, int invokingState) {
37368 			super(parent, invokingState);
37369 		}
37370 		@Override public int getRuleIndex() { return RULE_joinSpecification; }
37371 		@Override
37372 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37373 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJoinSpecification(this);
37374 			else return visitor.visitChildren(this);
37375 		}
37376 	}
37377 
37378 	public final JoinSpecificationContext joinSpecification() throws RecognitionException {
37379 		JoinSpecificationContext _localctx = new JoinSpecificationContext(_ctx, getState());
37380 		enterRule(_localctx, 716, RULE_joinSpecification);
37381 		try {
37382 			setState(5106);
37383 			_errHandler.sync(this);
37384 			switch (_input.LA(1)) {
37385 			case ON:
37386 				enterOuterAlt(_localctx, 1);
37387 				{
37388 				setState(5102);
37389 				match(ON);
37390 				setState(5103);
37391 				expr(0);
37392 				}
37393 				break;
37394 			case USING:
37395 				enterOuterAlt(_localctx, 2);
37396 				{
37397 				setState(5104);
37398 				match(USING);
37399 				setState(5105);
37400 				columnNames();
37401 				}
37402 				break;
37403 			default:
37404 				throw new NoViableAltException(this);
37405 			}
37406 		}
37407 		catch (RecognitionException re) {
37408 			_localctx.exception = re;
37409 			_errHandler.reportError(this, re);
37410 			_errHandler.recover(this, re);
37411 		}
37412 		finally {
37413 			exitRule();
37414 		}
37415 		return _localctx;
37416 	}
37417 
37418 	public static class WhereClauseContext extends ParserRuleContext {
37419 		public TerminalNode WHERE() { return getToken(SQLServerStatementParser.WHERE, 0); }
37420 		public ExprContext expr() {
37421 			return getRuleContext(ExprContext.class,0);
37422 		}
37423 		public WhereClauseContext(ParserRuleContext parent, int invokingState) {
37424 			super(parent, invokingState);
37425 		}
37426 		@Override public int getRuleIndex() { return RULE_whereClause; }
37427 		@Override
37428 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37429 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWhereClause(this);
37430 			else return visitor.visitChildren(this);
37431 		}
37432 	}
37433 
37434 	public final WhereClauseContext whereClause() throws RecognitionException {
37435 		WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState());
37436 		enterRule(_localctx, 718, RULE_whereClause);
37437 		try {
37438 			enterOuterAlt(_localctx, 1);
37439 			{
37440 			setState(5108);
37441 			match(WHERE);
37442 			setState(5109);
37443 			expr(0);
37444 			}
37445 		}
37446 		catch (RecognitionException re) {
37447 			_localctx.exception = re;
37448 			_errHandler.reportError(this, re);
37449 			_errHandler.recover(this, re);
37450 		}
37451 		finally {
37452 			exitRule();
37453 		}
37454 		return _localctx;
37455 	}
37456 
37457 	public static class GroupByClauseContext extends ParserRuleContext {
37458 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
37459 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
37460 		public List<OrderByItemContext> orderByItem() {
37461 			return getRuleContexts(OrderByItemContext.class);
37462 		}
37463 		public OrderByItemContext orderByItem(int i) {
37464 			return getRuleContext(OrderByItemContext.class,i);
37465 		}
37466 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
37467 		public TerminalNode COMMA_(int i) {
37468 			return getToken(SQLServerStatementParser.COMMA_, i);
37469 		}
37470 		public GroupByClauseContext(ParserRuleContext parent, int invokingState) {
37471 			super(parent, invokingState);
37472 		}
37473 		@Override public int getRuleIndex() { return RULE_groupByClause; }
37474 		@Override
37475 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37476 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGroupByClause(this);
37477 			else return visitor.visitChildren(this);
37478 		}
37479 	}
37480 
37481 	public final GroupByClauseContext groupByClause() throws RecognitionException {
37482 		GroupByClauseContext _localctx = new GroupByClauseContext(_ctx, getState());
37483 		enterRule(_localctx, 720, RULE_groupByClause);
37484 		int _la;
37485 		try {
37486 			enterOuterAlt(_localctx, 1);
37487 			{
37488 			setState(5111);
37489 			match(GROUP);
37490 			setState(5112);
37491 			match(BY);
37492 			setState(5113);
37493 			orderByItem();
37494 			setState(5118);
37495 			_errHandler.sync(this);
37496 			_la = _input.LA(1);
37497 			while (_la==COMMA_) {
37498 				{
37499 				{
37500 				setState(5114);
37501 				match(COMMA_);
37502 				setState(5115);
37503 				orderByItem();
37504 				}
37505 				}
37506 				setState(5120);
37507 				_errHandler.sync(this);
37508 				_la = _input.LA(1);
37509 			}
37510 			}
37511 		}
37512 		catch (RecognitionException re) {
37513 			_localctx.exception = re;
37514 			_errHandler.reportError(this, re);
37515 			_errHandler.recover(this, re);
37516 		}
37517 		finally {
37518 			exitRule();
37519 		}
37520 		return _localctx;
37521 	}
37522 
37523 	public static class HavingClauseContext extends ParserRuleContext {
37524 		public TerminalNode HAVING() { return getToken(SQLServerStatementParser.HAVING, 0); }
37525 		public ExprContext expr() {
37526 			return getRuleContext(ExprContext.class,0);
37527 		}
37528 		public HavingClauseContext(ParserRuleContext parent, int invokingState) {
37529 			super(parent, invokingState);
37530 		}
37531 		@Override public int getRuleIndex() { return RULE_havingClause; }
37532 		@Override
37533 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37534 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHavingClause(this);
37535 			else return visitor.visitChildren(this);
37536 		}
37537 	}
37538 
37539 	public final HavingClauseContext havingClause() throws RecognitionException {
37540 		HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState());
37541 		enterRule(_localctx, 722, RULE_havingClause);
37542 		try {
37543 			enterOuterAlt(_localctx, 1);
37544 			{
37545 			setState(5121);
37546 			match(HAVING);
37547 			setState(5122);
37548 			expr(0);
37549 			}
37550 		}
37551 		catch (RecognitionException re) {
37552 			_localctx.exception = re;
37553 			_errHandler.reportError(this, re);
37554 			_errHandler.recover(this, re);
37555 		}
37556 		finally {
37557 			exitRule();
37558 		}
37559 		return _localctx;
37560 	}
37561 
37562 	public static class SubqueryContext extends ParserRuleContext {
37563 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
37564 		public AggregationClauseContext aggregationClause() {
37565 			return getRuleContext(AggregationClauseContext.class,0);
37566 		}
37567 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
37568 		public SubqueryContext(ParserRuleContext parent, int invokingState) {
37569 			super(parent, invokingState);
37570 		}
37571 		@Override public int getRuleIndex() { return RULE_subquery; }
37572 		@Override
37573 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37574 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSubquery(this);
37575 			else return visitor.visitChildren(this);
37576 		}
37577 	}
37578 
37579 	public final SubqueryContext subquery() throws RecognitionException {
37580 		SubqueryContext _localctx = new SubqueryContext(_ctx, getState());
37581 		enterRule(_localctx, 724, RULE_subquery);
37582 		try {
37583 			enterOuterAlt(_localctx, 1);
37584 			{
37585 			setState(5124);
37586 			match(LP_);
37587 			setState(5125);
37588 			aggregationClause();
37589 			setState(5126);
37590 			match(RP_);
37591 			}
37592 		}
37593 		catch (RecognitionException re) {
37594 			_localctx.exception = re;
37595 			_errHandler.reportError(this, re);
37596 			_errHandler.recover(this, re);
37597 		}
37598 		finally {
37599 			exitRule();
37600 		}
37601 		return _localctx;
37602 	}
37603 
37604 	public static class WithClauseContext extends ParserRuleContext {
37605 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
37606 		public CteClauseSetContext cteClauseSet() {
37607 			return getRuleContext(CteClauseSetContext.class,0);
37608 		}
37609 		public WithClauseContext(ParserRuleContext parent, int invokingState) {
37610 			super(parent, invokingState);
37611 		}
37612 		@Override public int getRuleIndex() { return RULE_withClause; }
37613 		@Override
37614 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37615 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithClause(this);
37616 			else return visitor.visitChildren(this);
37617 		}
37618 	}
37619 
37620 	public final WithClauseContext withClause() throws RecognitionException {
37621 		WithClauseContext _localctx = new WithClauseContext(_ctx, getState());
37622 		enterRule(_localctx, 726, RULE_withClause);
37623 		try {
37624 			enterOuterAlt(_localctx, 1);
37625 			{
37626 			setState(5128);
37627 			match(WITH);
37628 			setState(5129);
37629 			cteClauseSet();
37630 			}
37631 		}
37632 		catch (RecognitionException re) {
37633 			_localctx.exception = re;
37634 			_errHandler.reportError(this, re);
37635 			_errHandler.recover(this, re);
37636 		}
37637 		finally {
37638 			exitRule();
37639 		}
37640 		return _localctx;
37641 	}
37642 
37643 	public static class CteClauseSetContext extends ParserRuleContext {
37644 		public List<CteClauseContext> cteClause() {
37645 			return getRuleContexts(CteClauseContext.class);
37646 		}
37647 		public CteClauseContext cteClause(int i) {
37648 			return getRuleContext(CteClauseContext.class,i);
37649 		}
37650 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
37651 		public TerminalNode COMMA_(int i) {
37652 			return getToken(SQLServerStatementParser.COMMA_, i);
37653 		}
37654 		public CteClauseSetContext(ParserRuleContext parent, int invokingState) {
37655 			super(parent, invokingState);
37656 		}
37657 		@Override public int getRuleIndex() { return RULE_cteClauseSet; }
37658 		@Override
37659 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37660 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCteClauseSet(this);
37661 			else return visitor.visitChildren(this);
37662 		}
37663 	}
37664 
37665 	public final CteClauseSetContext cteClauseSet() throws RecognitionException {
37666 		CteClauseSetContext _localctx = new CteClauseSetContext(_ctx, getState());
37667 		enterRule(_localctx, 728, RULE_cteClauseSet);
37668 		int _la;
37669 		try {
37670 			enterOuterAlt(_localctx, 1);
37671 			{
37672 			setState(5131);
37673 			cteClause();
37674 			setState(5136);
37675 			_errHandler.sync(this);
37676 			_la = _input.LA(1);
37677 			while (_la==COMMA_) {
37678 				{
37679 				{
37680 				setState(5132);
37681 				match(COMMA_);
37682 				setState(5133);
37683 				cteClause();
37684 				}
37685 				}
37686 				setState(5138);
37687 				_errHandler.sync(this);
37688 				_la = _input.LA(1);
37689 			}
37690 			}
37691 		}
37692 		catch (RecognitionException re) {
37693 			_localctx.exception = re;
37694 			_errHandler.reportError(this, re);
37695 			_errHandler.recover(this, re);
37696 		}
37697 		finally {
37698 			exitRule();
37699 		}
37700 		return _localctx;
37701 	}
37702 
37703 	public static class CteClauseContext extends ParserRuleContext {
37704 		public IdentifierContext identifier() {
37705 			return getRuleContext(IdentifierContext.class,0);
37706 		}
37707 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
37708 		public SubqueryContext subquery() {
37709 			return getRuleContext(SubqueryContext.class,0);
37710 		}
37711 		public ColumnNamesContext columnNames() {
37712 			return getRuleContext(ColumnNamesContext.class,0);
37713 		}
37714 		public CteClauseContext(ParserRuleContext parent, int invokingState) {
37715 			super(parent, invokingState);
37716 		}
37717 		@Override public int getRuleIndex() { return RULE_cteClause; }
37718 		@Override
37719 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37720 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCteClause(this);
37721 			else return visitor.visitChildren(this);
37722 		}
37723 	}
37724 
37725 	public final CteClauseContext cteClause() throws RecognitionException {
37726 		CteClauseContext _localctx = new CteClauseContext(_ctx, getState());
37727 		enterRule(_localctx, 730, RULE_cteClause);
37728 		int _la;
37729 		try {
37730 			enterOuterAlt(_localctx, 1);
37731 			{
37732 			setState(5139);
37733 			identifier();
37734 			setState(5141);
37735 			_errHandler.sync(this);
37736 			_la = _input.LA(1);
37737 			if (_la==LP_) {
37738 				{
37739 				setState(5140);
37740 				columnNames();
37741 				}
37742 			}
37743 
37744 			setState(5143);
37745 			match(AS);
37746 			setState(5144);
37747 			subquery();
37748 			}
37749 		}
37750 		catch (RecognitionException re) {
37751 			_localctx.exception = re;
37752 			_errHandler.reportError(this, re);
37753 			_errHandler.recover(this, re);
37754 		}
37755 		finally {
37756 			exitRule();
37757 		}
37758 		return _localctx;
37759 	}
37760 
37761 	public static class OutputClauseContext extends ParserRuleContext {
37762 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
37763 		public OutputWithColumnsContext outputWithColumns() {
37764 			return getRuleContext(OutputWithColumnsContext.class,0);
37765 		}
37766 		public OutputWithAateriskContext outputWithAaterisk() {
37767 			return getRuleContext(OutputWithAateriskContext.class,0);
37768 		}
37769 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
37770 		public OutputTableNameContext outputTableName() {
37771 			return getRuleContext(OutputTableNameContext.class,0);
37772 		}
37773 		public ColumnNamesContext columnNames() {
37774 			return getRuleContext(ColumnNamesContext.class,0);
37775 		}
37776 		public OutputClauseContext(ParserRuleContext parent, int invokingState) {
37777 			super(parent, invokingState);
37778 		}
37779 		@Override public int getRuleIndex() { return RULE_outputClause; }
37780 		@Override
37781 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37782 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputClause(this);
37783 			else return visitor.visitChildren(this);
37784 		}
37785 	}
37786 
37787 	public final OutputClauseContext outputClause() throws RecognitionException {
37788 		OutputClauseContext _localctx = new OutputClauseContext(_ctx, getState());
37789 		enterRule(_localctx, 732, RULE_outputClause);
37790 		int _la;
37791 		try {
37792 			enterOuterAlt(_localctx, 1);
37793 			{
37794 			setState(5146);
37795 			match(OUTPUT);
37796 			setState(5149);
37797 			_errHandler.sync(this);
37798 			switch ( getInterpreter().adaptivePredict(_input,584,_ctx) ) {
37799 			case 1:
37800 				{
37801 				setState(5147);
37802 				outputWithColumns();
37803 				}
37804 				break;
37805 			case 2:
37806 				{
37807 				setState(5148);
37808 				outputWithAaterisk();
37809 				}
37810 				break;
37811 			}
37812 			setState(5156);
37813 			_errHandler.sync(this);
37814 			_la = _input.LA(1);
37815 			if (_la==INTO) {
37816 				{
37817 				setState(5151);
37818 				match(INTO);
37819 				setState(5152);
37820 				outputTableName();
37821 				setState(5154);
37822 				_errHandler.sync(this);
37823 				_la = _input.LA(1);
37824 				if (_la==LP_) {
37825 					{
37826 					setState(5153);
37827 					columnNames();
37828 					}
37829 				}
37830 
37831 				}
37832 			}
37833 
37834 			}
37835 		}
37836 		catch (RecognitionException re) {
37837 			_localctx.exception = re;
37838 			_errHandler.reportError(this, re);
37839 			_errHandler.recover(this, re);
37840 		}
37841 		finally {
37842 			exitRule();
37843 		}
37844 		return _localctx;
37845 	}
37846 
37847 	public static class OutputWithColumnsContext extends ParserRuleContext {
37848 		public List<OutputWithColumnContext> outputWithColumn() {
37849 			return getRuleContexts(OutputWithColumnContext.class);
37850 		}
37851 		public OutputWithColumnContext outputWithColumn(int i) {
37852 			return getRuleContext(OutputWithColumnContext.class,i);
37853 		}
37854 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
37855 		public TerminalNode COMMA_(int i) {
37856 			return getToken(SQLServerStatementParser.COMMA_, i);
37857 		}
37858 		public OutputWithColumnsContext(ParserRuleContext parent, int invokingState) {
37859 			super(parent, invokingState);
37860 		}
37861 		@Override public int getRuleIndex() { return RULE_outputWithColumns; }
37862 		@Override
37863 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37864 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithColumns(this);
37865 			else return visitor.visitChildren(this);
37866 		}
37867 	}
37868 
37869 	public final OutputWithColumnsContext outputWithColumns() throws RecognitionException {
37870 		OutputWithColumnsContext _localctx = new OutputWithColumnsContext(_ctx, getState());
37871 		enterRule(_localctx, 734, RULE_outputWithColumns);
37872 		int _la;
37873 		try {
37874 			enterOuterAlt(_localctx, 1);
37875 			{
37876 			setState(5158);
37877 			outputWithColumn();
37878 			setState(5163);
37879 			_errHandler.sync(this);
37880 			_la = _input.LA(1);
37881 			while (_la==COMMA_) {
37882 				{
37883 				{
37884 				setState(5159);
37885 				match(COMMA_);
37886 				setState(5160);
37887 				outputWithColumn();
37888 				}
37889 				}
37890 				setState(5165);
37891 				_errHandler.sync(this);
37892 				_la = _input.LA(1);
37893 			}
37894 			}
37895 		}
37896 		catch (RecognitionException re) {
37897 			_localctx.exception = re;
37898 			_errHandler.reportError(this, re);
37899 			_errHandler.recover(this, re);
37900 		}
37901 		finally {
37902 			exitRule();
37903 		}
37904 		return _localctx;
37905 	}
37906 
37907 	public static class OutputWithColumnContext extends ParserRuleContext {
37908 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
37909 		public NameContext name() {
37910 			return getRuleContext(NameContext.class,0);
37911 		}
37912 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
37913 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
37914 		public AliasContext alias() {
37915 			return getRuleContext(AliasContext.class,0);
37916 		}
37917 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
37918 		public OutputWithColumnContext(ParserRuleContext parent, int invokingState) {
37919 			super(parent, invokingState);
37920 		}
37921 		@Override public int getRuleIndex() { return RULE_outputWithColumn; }
37922 		@Override
37923 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37924 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithColumn(this);
37925 			else return visitor.visitChildren(this);
37926 		}
37927 	}
37928 
37929 	public final OutputWithColumnContext outputWithColumn() throws RecognitionException {
37930 		OutputWithColumnContext _localctx = new OutputWithColumnContext(_ctx, getState());
37931 		enterRule(_localctx, 736, RULE_outputWithColumn);
37932 		int _la;
37933 		try {
37934 			enterOuterAlt(_localctx, 1);
37935 			{
37936 			setState(5166);
37937 			_la = _input.LA(1);
37938 			if ( !(_la==INSERTED || _la==DELETED) ) {
37939 			_errHandler.recoverInline(this);
37940 			}
37941 			else {
37942 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
37943 				_errHandler.reportMatch(this);
37944 				consume();
37945 			}
37946 			setState(5167);
37947 			match(DOT_);
37948 			setState(5168);
37949 			name();
37950 			setState(5173);
37951 			_errHandler.sync(this);
37952 			switch ( getInterpreter().adaptivePredict(_input,589,_ctx) ) {
37953 			case 1:
37954 				{
37955 				setState(5170);
37956 				_errHandler.sync(this);
37957 				_la = _input.LA(1);
37958 				if (_la==AS) {
37959 					{
37960 					setState(5169);
37961 					match(AS);
37962 					}
37963 				}
37964 
37965 				setState(5172);
37966 				alias();
37967 				}
37968 				break;
37969 			}
37970 			}
37971 		}
37972 		catch (RecognitionException re) {
37973 			_localctx.exception = re;
37974 			_errHandler.reportError(this, re);
37975 			_errHandler.recover(this, re);
37976 		}
37977 		finally {
37978 			exitRule();
37979 		}
37980 		return _localctx;
37981 	}
37982 
37983 	public static class OutputWithAateriskContext extends ParserRuleContext {
37984 		public TerminalNode DOT_ASTERISK_() { return getToken(SQLServerStatementParser.DOT_ASTERISK_, 0); }
37985 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
37986 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
37987 		public OutputWithAateriskContext(ParserRuleContext parent, int invokingState) {
37988 			super(parent, invokingState);
37989 		}
37990 		@Override public int getRuleIndex() { return RULE_outputWithAaterisk; }
37991 		@Override
37992 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37993 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithAaterisk(this);
37994 			else return visitor.visitChildren(this);
37995 		}
37996 	}
37997 
37998 	public final OutputWithAateriskContext outputWithAaterisk() throws RecognitionException {
37999 		OutputWithAateriskContext _localctx = new OutputWithAateriskContext(_ctx, getState());
38000 		enterRule(_localctx, 738, RULE_outputWithAaterisk);
38001 		int _la;
38002 		try {
38003 			enterOuterAlt(_localctx, 1);
38004 			{
38005 			setState(5175);
38006 			_la = _input.LA(1);
38007 			if ( !(_la==INSERTED || _la==DELETED) ) {
38008 			_errHandler.recoverInline(this);
38009 			}
38010 			else {
38011 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38012 				_errHandler.reportMatch(this);
38013 				consume();
38014 			}
38015 			setState(5176);
38016 			match(DOT_ASTERISK_);
38017 			}
38018 		}
38019 		catch (RecognitionException re) {
38020 			_localctx.exception = re;
38021 			_errHandler.reportError(this, re);
38022 			_errHandler.recover(this, re);
38023 		}
38024 		finally {
38025 			exitRule();
38026 		}
38027 		return _localctx;
38028 	}
38029 
38030 	public static class OutputTableNameContext extends ParserRuleContext {
38031 		public TerminalNode AT_() { return getToken(SQLServerStatementParser.AT_, 0); }
38032 		public NameContext name() {
38033 			return getRuleContext(NameContext.class,0);
38034 		}
38035 		public TableNameContext tableName() {
38036 			return getRuleContext(TableNameContext.class,0);
38037 		}
38038 		public OutputTableNameContext(ParserRuleContext parent, int invokingState) {
38039 			super(parent, invokingState);
38040 		}
38041 		@Override public int getRuleIndex() { return RULE_outputTableName; }
38042 		@Override
38043 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38044 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputTableName(this);
38045 			else return visitor.visitChildren(this);
38046 		}
38047 	}
38048 
38049 	public final OutputTableNameContext outputTableName() throws RecognitionException {
38050 		OutputTableNameContext _localctx = new OutputTableNameContext(_ctx, getState());
38051 		enterRule(_localctx, 740, RULE_outputTableName);
38052 		try {
38053 			setState(5181);
38054 			_errHandler.sync(this);
38055 			switch (_input.LA(1)) {
38056 			case AT_:
38057 				enterOuterAlt(_localctx, 1);
38058 				{
38059 				{
38060 				setState(5178);
38061 				match(AT_);
38062 				setState(5179);
38063 				name();
38064 				}
38065 				}
38066 				break;
38067 			case TRUNCATE:
38068 			case SCHEMA:
38069 			case FUNCTION:
38070 			case TRIGGER:
38071 			case CAST:
38072 			case GROUP:
38073 			case LIMIT:
38074 			case OFFSET:
38075 			case SAVEPOINT:
38076 			case BOOLEAN:
38077 			case ARRAY:
38078 			case DATE:
38079 			case LOCALTIME:
38080 			case LOCALTIMESTAMP:
38081 			case QUARTER:
38082 			case WEEK:
38083 			case DAY:
38084 			case MICROSECOND:
38085 			case MAX:
38086 			case MIN:
38087 			case SUM:
38088 			case COUNT:
38089 			case AVG:
38090 			case ENABLE:
38091 			case DISABLE:
38092 			case INSTANCE:
38093 			case DO:
38094 			case DEFINER:
38095 			case SQL:
38096 			case CASCADED:
38097 			case LOCAL:
38098 			case NEXT:
38099 			case NAME:
38100 			case INTEGER:
38101 			case TYPE:
38102 			case READ_ONLY:
38103 			case DATABASE:
38104 			case DATEPART:
38105 			case PASSWORD:
38106 			case BINARY:
38107 			case HIDDEN_:
38108 			case MOD:
38109 			case PARTITION:
38110 			case PARTITIONS:
38111 			case TOP:
38112 			case ROW:
38113 			case ROWS:
38114 			case XOR:
38115 			case ALWAYS:
38116 			case ROLE:
38117 			case START:
38118 			case ALGORITHM:
38119 			case AUTO:
38120 			case BLOCKERS:
38121 			case CLUSTERED:
38122 			case NONCLUSTERED:
38123 			case COLUMNSTORE:
38124 			case CONTENT:
38125 			case YEARS:
38126 			case MONTHS:
38127 			case WEEKS:
38128 			case DAYS:
38129 			case MINUTES:
38130 			case DENY:
38131 			case DETERMINISTIC:
38132 			case DISTRIBUTION:
38133 			case DOCUMENT:
38134 			case DURABILITY:
38135 			case ENCRYPTED:
38136 			case FILESTREAM:
38137 			case FILETABLE:
38138 			case FILLFACTOR:
38139 			case FOLLOWING:
38140 			case HASH:
38141 			case HEAP:
38142 			case INBOUND:
38143 			case OUTBOUND:
38144 			case UNBOUNDED:
38145 			case INFINITE:
38146 			case LOGIN:
38147 			case MASKED:
38148 			case MAXDOP:
38149 			case MOVE:
38150 			case NOCHECK:
38151 			case OBJECT:
38152 			case OFF:
38153 			case ONLINE:
38154 			case OVER:
38155 			case PAGE:
38156 			case PAUSED:
38157 			case PERIOD:
38158 			case PERSISTED:
38159 			case PRECEDING:
38160 			case RANDOMIZED:
38161 			case RANGE:
38162 			case REBUILD:
38163 			case REPLICATE:
38164 			case REPLICATION:
38165 			case RESUMABLE:
38166 			case ROWGUIDCOL:
38167 			case SAVE:
38168 			case SELF:
38169 			case SPARSE:
38170 			case SWITCH:
38171 			case TRAN:
38172 			case TRANCOUNT:
38173 			case CONTROL:
38174 			case CONCAT:
38175 			case TAKE:
38176 			case OWNERSHIP:
38177 			case DEFINITION:
38178 			case APPLICATION:
38179 			case ASSEMBLY:
38180 			case SYMMETRIC:
38181 			case ASYMMETRIC:
38182 			case SERVER:
38183 			case RECEIVE:
38184 			case CHANGE:
38185 			case TRACE:
38186 			case TRACKING:
38187 			case RESOURCES:
38188 			case SETTINGS:
38189 			case STATE:
38190 			case AVAILABILITY:
38191 			case CREDENTIAL:
38192 			case ENDPOINT:
38193 			case EVENT:
38194 			case NOTIFICATION:
38195 			case LINKED:
38196 			case AUDIT:
38197 			case DDL:
38198 			case XML:
38199 			case IMPERSONATE:
38200 			case SECURABLES:
38201 			case AUTHENTICATE:
38202 			case EXTERNAL:
38203 			case ACCESS:
38204 			case ADMINISTER:
38205 			case BULK:
38206 			case OPERATIONS:
38207 			case UNSAFE:
38208 			case SHUTDOWN:
38209 			case SCOPED:
38210 			case CONFIGURATION:
38211 			case DATASPACE:
38212 			case SERVICE:
38213 			case CERTIFICATE:
38214 			case CONTRACT:
38215 			case ENCRYPTION:
38216 			case MASTER:
38217 			case DATA:
38218 			case SOURCE:
38219 			case FILE:
38220 			case FORMAT:
38221 			case LIBRARY:
38222 			case FULLTEXT:
38223 			case MASK:
38224 			case UNMASK:
38225 			case MESSAGE:
38226 			case REMOTE:
38227 			case BINDING:
38228 			case ROUTE:
38229 			case SECURITY:
38230 			case POLICY:
38231 			case AGGREGATE:
38232 			case QUEUE:
38233 			case RULE:
38234 			case SYNONYM:
38235 			case COLLECTION:
38236 			case SCRIPT:
38237 			case KILL:
38238 			case BACKUP:
38239 			case LOG:
38240 			case SHOWPLAN:
38241 			case SUBSCRIBE:
38242 			case QUERY:
38243 			case NOTIFICATIONS:
38244 			case CHECKPOINT:
38245 			case SEQUENCE:
38246 			case ABORT_AFTER_WAIT:
38247 			case ALLOW_PAGE_LOCKS:
38248 			case ALLOW_ROW_LOCKS:
38249 			case ALL_SPARSE_COLUMNS:
38250 			case BUCKET_COUNT:
38251 			case COLUMNSTORE_ARCHIVE:
38252 			case COLUMN_ENCRYPTION_KEY:
38253 			case COLUMN_SET:
38254 			case COMPRESSION_DELAY:
38255 			case DATABASE_DEAULT:
38256 			case DATA_COMPRESSION:
38257 			case DATA_CONSISTENCY_CHECK:
38258 			case ENCRYPTION_TYPE:
38259 			case SYSTEM_TIME:
38260 			case SYSTEM_VERSIONING:
38261 			case TEXTIMAGE_ON:
38262 			case WAIT_AT_LOW_PRIORITY:
38263 			case STATISTICS_INCREMENTAL:
38264 			case STATISTICS_NORECOMPUTE:
38265 			case ROUND_ROBIN:
38266 			case SCHEMA_AND_DATA:
38267 			case SCHEMA_ONLY:
38268 			case SORT_IN_TEMPDB:
38269 			case IGNORE_DUP_KEY:
38270 			case IMPLICIT_TRANSACTIONS:
38271 			case MAX_DURATION:
38272 			case MEMORY_OPTIMIZED:
38273 			case MIGRATION_STATE:
38274 			case PAD_INDEX:
38275 			case REMOTE_DATA_ARCHIVE:
38276 			case FILESTREAM_ON:
38277 			case FILETABLE_COLLATE_FILENAME:
38278 			case FILETABLE_DIRECTORY:
38279 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
38280 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
38281 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
38282 			case FILTER_PREDICATE:
38283 			case HISTORY_RETENTION_PERIOD:
38284 			case HISTORY_TABLE:
38285 			case LOCK_ESCALATION:
38286 			case DROP_EXISTING:
38287 			case ROW_NUMBER:
38288 			case FIRST:
38289 			case DATETIME2:
38290 			case OUTPUT:
38291 			case INSERTED:
38292 			case DELETED:
38293 			case FILENAME:
38294 			case MAXSIZE:
38295 			case FILEGROWTH:
38296 			case UNLIMITED:
38297 			case KB:
38298 			case MB:
38299 			case GB:
38300 			case TB:
38301 			case MEMORY_OPTIMIZED_DATA:
38302 			case FILEGROUP:
38303 			case NON_TRANSACTED_ACCESS:
38304 			case DB_CHAINING:
38305 			case TRUSTWORTHY:
38306 			case FORWARD_ONLY:
38307 			case KEYSET:
38308 			case FAST_FORWARD:
38309 			case SCROLL_LOCKS:
38310 			case OPTIMISTIC:
38311 			case TYPE_WARNING:
38312 			case SCHEMABINDING:
38313 			case CALLER:
38314 			case OWNER:
38315 			case SNAPSHOT:
38316 			case REPEATABLE:
38317 			case SERIALIZABLE:
38318 			case NATIVE_COMPILATION:
38319 			case VIEW_METADATA:
38320 			case INSTEAD:
38321 			case APPEND:
38322 			case INCREMENT:
38323 			case CACHE:
38324 			case MINVALUE:
38325 			case MAXVALUE:
38326 			case RESTART:
38327 			case LOB_COMPACTION:
38328 			case COMPRESS_ALL_ROW_GROUPS:
38329 			case REORGANIZE:
38330 			case RESUME:
38331 			case PAUSE:
38332 			case ABORT:
38333 			case ACCELERATED_DATABASE_RECOVERY:
38334 			case PERSISTENT_VERSION_STORE_FILEGROUP:
38335 			case IMMEDIATE:
38336 			case NO_WAIT:
38337 			case TARGET_RECOVERY_TIME:
38338 			case SECONDS:
38339 			case HONOR_BROKER_PRIORITY:
38340 			case ERROR_BROKER_CONVERSATIONS:
38341 			case NEW_BROKER:
38342 			case DISABLE_BROKER:
38343 			case ENABLE_BROKER:
38344 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
38345 			case READ_COMMITTED_SNAPSHOT:
38346 			case ALLOW_SNAPSHOT_ISOLATION:
38347 			case RECURSIVE_TRIGGERS:
38348 			case QUOTED_IDENTIFIER:
38349 			case NUMERIC_ROUNDABORT:
38350 			case CONCAT_NULL_YIELDS_NULL:
38351 			case COMPATIBILITY_LEVEL:
38352 			case ARITHABORT:
38353 			case ANSI_WARNINGS:
38354 			case ANSI_PADDING:
38355 			case ANSI_NULLS:
38356 			case ANSI_NULL_DEFAULT:
38357 			case PAGE_VERIFY:
38358 			case CHECKSUM:
38359 			case TORN_PAGE_DETECTION:
38360 			case BULK_LOGGED:
38361 			case RECOVERY:
38362 			case TOTAL_EXECUTION_CPU_TIME_MS:
38363 			case TOTAL_COMPILE_CPU_TIME_MS:
38364 			case STALE_CAPTURE_POLICY_THRESHOLD:
38365 			case EXECUTION_COUNT:
38366 			case QUERY_CAPTURE_POLICY:
38367 			case WAIT_STATS_CAPTURE_MODE:
38368 			case MAX_PLANS_PER_QUERY:
38369 			case QUERY_CAPTURE_MODE:
38370 			case SIZE_BASED_CLEANUP_MODE:
38371 			case INTERVAL_LENGTH_MINUTES:
38372 			case MAX_STORAGE_SIZE_MB:
38373 			case DATA_FLUSH_INTERVAL_SECONDS:
38374 			case CLEANUP_POLICY:
38375 			case CUSTOM:
38376 			case STALE_QUERY_THRESHOLD_DAYS:
38377 			case OPERATION_MODE:
38378 			case QUERY_STORE:
38379 			case CURSOR_DEFAULT:
38380 			case GLOBAL:
38381 			case CURSOR_CLOSE_ON_COMMIT:
38382 			case HOURS:
38383 			case CHANGE_RETENTION:
38384 			case AUTO_CLEANUP:
38385 			case CHANGE_TRACKING:
38386 			case AUTOMATIC_TUNING:
38387 			case FORCE_LAST_GOOD_PLAN:
38388 			case AUTO_UPDATE_STATISTICS_ASYNC:
38389 			case AUTO_UPDATE_STATISTICS:
38390 			case AUTO_SHRINK:
38391 			case AUTO_CREATE_STATISTICS:
38392 			case INCREMENTAL:
38393 			case AUTO_CLOSE:
38394 			case DATA_RETENTION:
38395 			case TEMPORAL_HISTORY_RETENTION:
38396 			case EDITION:
38397 			case MIXED_PAGE_ALLOCATION:
38398 			case DISABLED:
38399 			case ALLOWED:
38400 			case HADR:
38401 			case MULTI_USER:
38402 			case RESTRICTED_USER:
38403 			case SINGLE_USER:
38404 			case OFFLINE:
38405 			case EMERGENCY:
38406 			case SUSPEND:
38407 			case DATE_CORRELATION_OPTIMIZATION:
38408 			case ELASTIC_POOL:
38409 			case SERVICE_OBJECTIVE:
38410 			case DATABASE_NAME:
38411 			case ALLOW_CONNECTIONS:
38412 			case GEO:
38413 			case NAMED:
38414 			case DATEFIRST:
38415 			case BACKUP_STORAGE_REDUNDANCY:
38416 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
38417 			case SECONDARY:
38418 			case FAILOVER:
38419 			case DEFAULT_FULLTEXT_LANGUAGE:
38420 			case DEFAULT_LANGUAGE:
38421 			case INLINE:
38422 			case NESTED_TRIGGERS:
38423 			case TRANSFORM_NOISE_WORDS:
38424 			case TWO_DIGIT_YEAR_CUTOFF:
38425 			case PERSISTENT_LOG_BUFFER:
38426 			case DIRECTORY_NAME:
38427 			case DATEFORMAT:
38428 			case DELAYED_DURABILITY:
38429 			case AUTHORIZATION:
38430 			case TRANSFER:
38431 			case SEARCH:
38432 			case MEMBER:
38433 			case IDENTIFIER_:
38434 			case DELIMITED_IDENTIFIER_:
38435 				enterOuterAlt(_localctx, 2);
38436 				{
38437 				setState(5180);
38438 				tableName();
38439 				}
38440 				break;
38441 			default:
38442 				throw new NoViableAltException(this);
38443 			}
38444 		}
38445 		catch (RecognitionException re) {
38446 			_localctx.exception = re;
38447 			_errHandler.reportError(this, re);
38448 			_errHandler.recover(this, re);
38449 		}
38450 		finally {
38451 			exitRule();
38452 		}
38453 		return _localctx;
38454 	}
38455 
38456 	public static class QueryHintContext extends ParserRuleContext {
38457 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
38458 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
38459 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
38460 		public TerminalNode UNION() { return getToken(SQLServerStatementParser.UNION, 0); }
38461 		public TerminalNode CONCAT() { return getToken(SQLServerStatementParser.CONCAT, 0); }
38462 		public TerminalNode MERGE() { return getToken(SQLServerStatementParser.MERGE, 0); }
38463 		public TerminalNode JOIN() { return getToken(SQLServerStatementParser.JOIN, 0); }
38464 		public TerminalNode LOOP() { return getToken(SQLServerStatementParser.LOOP, 0); }
38465 		public TerminalNode EXPAND() { return getToken(SQLServerStatementParser.EXPAND, 0); }
38466 		public TerminalNode VIEWS() { return getToken(SQLServerStatementParser.VIEWS, 0); }
38467 		public TerminalNode FAST() { return getToken(SQLServerStatementParser.FAST, 0); }
38468 		public TerminalNode INT_NUM_() { return getToken(SQLServerStatementParser.INT_NUM_, 0); }
38469 		public TerminalNode FORCE() { return getToken(SQLServerStatementParser.FORCE, 0); }
38470 		public TerminalNode EXTERNALPUSHDOWN() { return getToken(SQLServerStatementParser.EXTERNALPUSHDOWN, 0); }
38471 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
38472 		public TerminalNode SCALEOUTEXECUTION() { return getToken(SQLServerStatementParser.SCALEOUTEXECUTION, 0); }
38473 		public TerminalNode IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX() { return getToken(SQLServerStatementParser.IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX, 0); }
38474 		public TerminalNode KEEP() { return getToken(SQLServerStatementParser.KEEP, 0); }
38475 		public TerminalNode PLAN() { return getToken(SQLServerStatementParser.PLAN, 0); }
38476 		public TerminalNode KEEPFIXED() { return getToken(SQLServerStatementParser.KEEPFIXED, 0); }
38477 		public TerminalNode MAX_GRANT_PERCENT() { return getToken(SQLServerStatementParser.MAX_GRANT_PERCENT, 0); }
38478 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
38479 		public TerminalNode EQ_(int i) {
38480 			return getToken(SQLServerStatementParser.EQ_, i);
38481 		}
38482 		public TerminalNode DECIMAL_NUM_() { return getToken(SQLServerStatementParser.DECIMAL_NUM_, 0); }
38483 		public TerminalNode MIN_GRANT_PERCENT() { return getToken(SQLServerStatementParser.MIN_GRANT_PERCENT, 0); }
38484 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
38485 		public TerminalNode MAXRECURSION() { return getToken(SQLServerStatementParser.MAXRECURSION, 0); }
38486 		public TerminalNode NO_PERFORMANCE_SPOOL() { return getToken(SQLServerStatementParser.NO_PERFORMANCE_SPOOL, 0); }
38487 		public TerminalNode OPTIMIZE() { return getToken(SQLServerStatementParser.OPTIMIZE, 0); }
38488 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
38489 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
38490 		public TerminalNode AT_() { return getToken(SQLServerStatementParser.AT_, 0); }
38491 		public NameContext name() {
38492 			return getRuleContext(NameContext.class,0);
38493 		}
38494 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
38495 		public List<TerminalNode> UNKNOWN() { return getTokens(SQLServerStatementParser.UNKNOWN); }
38496 		public TerminalNode UNKNOWN(int i) {
38497 			return getToken(SQLServerStatementParser.UNKNOWN, i);
38498 		}
38499 		public List<IdentifierContext> identifier() {
38500 			return getRuleContexts(IdentifierContext.class);
38501 		}
38502 		public IdentifierContext identifier(int i) {
38503 			return getRuleContext(IdentifierContext.class,i);
38504 		}
38505 		public TerminalNode PARAMETERIZATION() { return getToken(SQLServerStatementParser.PARAMETERIZATION, 0); }
38506 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
38507 		public TerminalNode FORCED() { return getToken(SQLServerStatementParser.FORCED, 0); }
38508 		public TerminalNode QUERYTRACEON() { return getToken(SQLServerStatementParser.QUERYTRACEON, 0); }
38509 		public TerminalNode RECOMPILE() { return getToken(SQLServerStatementParser.RECOMPILE, 0); }
38510 		public TerminalNode ROBUST() { return getToken(SQLServerStatementParser.ROBUST, 0); }
38511 		public TerminalNode USE() { return getToken(SQLServerStatementParser.USE, 0); }
38512 		public TerminalNode HINT() { return getToken(SQLServerStatementParser.HINT, 0); }
38513 		public List<UseHitNameContext> useHitName() {
38514 			return getRuleContexts(UseHitNameContext.class);
38515 		}
38516 		public UseHitNameContext useHitName(int i) {
38517 			return getRuleContext(UseHitNameContext.class,i);
38518 		}
38519 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
38520 		public QueryHintContext(ParserRuleContext parent, int invokingState) {
38521 			super(parent, invokingState);
38522 		}
38523 		@Override public int getRuleIndex() { return RULE_queryHint; }
38524 		@Override
38525 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38526 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryHint(this);
38527 			else return visitor.visitChildren(this);
38528 		}
38529 	}
38530 
38531 	public final QueryHintContext queryHint() throws RecognitionException {
38532 		QueryHintContext _localctx = new QueryHintContext(_ctx, getState());
38533 		enterRule(_localctx, 742, RULE_queryHint);
38534 		int _la;
38535 		try {
38536 			setState(5253);
38537 			_errHandler.sync(this);
38538 			switch ( getInterpreter().adaptivePredict(_input,594,_ctx) ) {
38539 			case 1:
38540 				enterOuterAlt(_localctx, 1);
38541 				{
38542 				setState(5183);
38543 				_la = _input.LA(1);
38544 				if ( !(_la==ORDER || _la==HASH) ) {
38545 				_errHandler.recoverInline(this);
38546 				}
38547 				else {
38548 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38549 					_errHandler.reportMatch(this);
38550 					consume();
38551 				}
38552 				setState(5184);
38553 				match(GROUP);
38554 				}
38555 				break;
38556 			case 2:
38557 				enterOuterAlt(_localctx, 2);
38558 				{
38559 				setState(5185);
38560 				_la = _input.LA(1);
38561 				if ( !(_la==MERGE || _la==HASH || _la==CONCAT) ) {
38562 				_errHandler.recoverInline(this);
38563 				}
38564 				else {
38565 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38566 					_errHandler.reportMatch(this);
38567 					consume();
38568 				}
38569 				setState(5186);
38570 				match(UNION);
38571 				}
38572 				break;
38573 			case 3:
38574 				enterOuterAlt(_localctx, 3);
38575 				{
38576 				setState(5187);
38577 				_la = _input.LA(1);
38578 				if ( !(_la==MERGE || _la==LOOP || _la==HASH) ) {
38579 				_errHandler.recoverInline(this);
38580 				}
38581 				else {
38582 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38583 					_errHandler.reportMatch(this);
38584 					consume();
38585 				}
38586 				setState(5188);
38587 				match(JOIN);
38588 				}
38589 				break;
38590 			case 4:
38591 				enterOuterAlt(_localctx, 4);
38592 				{
38593 				setState(5189);
38594 				match(EXPAND);
38595 				setState(5190);
38596 				match(VIEWS);
38597 				}
38598 				break;
38599 			case 5:
38600 				enterOuterAlt(_localctx, 5);
38601 				{
38602 				setState(5191);
38603 				match(FAST);
38604 				setState(5192);
38605 				match(INT_NUM_);
38606 				}
38607 				break;
38608 			case 6:
38609 				enterOuterAlt(_localctx, 6);
38610 				{
38611 				setState(5193);
38612 				match(FORCE);
38613 				setState(5194);
38614 				match(ORDER);
38615 				}
38616 				break;
38617 			case 7:
38618 				enterOuterAlt(_localctx, 7);
38619 				{
38620 				setState(5195);
38621 				_la = _input.LA(1);
38622 				if ( !(_la==DISABLE || _la==FORCE) ) {
38623 				_errHandler.recoverInline(this);
38624 				}
38625 				else {
38626 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38627 					_errHandler.reportMatch(this);
38628 					consume();
38629 				}
38630 				setState(5196);
38631 				match(EXTERNALPUSHDOWN);
38632 				}
38633 				break;
38634 			case 8:
38635 				enterOuterAlt(_localctx, 8);
38636 				{
38637 				setState(5197);
38638 				_la = _input.LA(1);
38639 				if ( !(_la==DISABLE || _la==FORCE) ) {
38640 				_errHandler.recoverInline(this);
38641 				}
38642 				else {
38643 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38644 					_errHandler.reportMatch(this);
38645 					consume();
38646 				}
38647 				setState(5198);
38648 				match(SCALEOUTEXECUTION);
38649 				}
38650 				break;
38651 			case 9:
38652 				enterOuterAlt(_localctx, 9);
38653 				{
38654 				setState(5199);
38655 				match(IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX);
38656 				}
38657 				break;
38658 			case 10:
38659 				enterOuterAlt(_localctx, 10);
38660 				{
38661 				setState(5200);
38662 				match(KEEP);
38663 				setState(5201);
38664 				match(PLAN);
38665 				}
38666 				break;
38667 			case 11:
38668 				enterOuterAlt(_localctx, 11);
38669 				{
38670 				setState(5202);
38671 				match(KEEPFIXED);
38672 				setState(5203);
38673 				match(PLAN);
38674 				}
38675 				break;
38676 			case 12:
38677 				enterOuterAlt(_localctx, 12);
38678 				{
38679 				setState(5204);
38680 				match(MAX_GRANT_PERCENT);
38681 				setState(5205);
38682 				match(EQ_);
38683 				setState(5206);
38684 				match(DECIMAL_NUM_);
38685 				}
38686 				break;
38687 			case 13:
38688 				enterOuterAlt(_localctx, 13);
38689 				{
38690 				setState(5207);
38691 				match(MIN_GRANT_PERCENT);
38692 				setState(5208);
38693 				match(EQ_);
38694 				setState(5209);
38695 				match(DECIMAL_NUM_);
38696 				}
38697 				break;
38698 			case 14:
38699 				enterOuterAlt(_localctx, 14);
38700 				{
38701 				setState(5210);
38702 				match(MAXDOP);
38703 				setState(5211);
38704 				match(INT_NUM_);
38705 				}
38706 				break;
38707 			case 15:
38708 				enterOuterAlt(_localctx, 15);
38709 				{
38710 				setState(5212);
38711 				match(MAXRECURSION);
38712 				setState(5213);
38713 				match(INT_NUM_);
38714 				}
38715 				break;
38716 			case 16:
38717 				enterOuterAlt(_localctx, 16);
38718 				{
38719 				setState(5214);
38720 				match(NO_PERFORMANCE_SPOOL);
38721 				}
38722 				break;
38723 			case 17:
38724 				enterOuterAlt(_localctx, 17);
38725 				{
38726 				setState(5215);
38727 				match(OPTIMIZE);
38728 				setState(5216);
38729 				match(FOR);
38730 				setState(5217);
38731 				match(LP_);
38732 				setState(5218);
38733 				match(AT_);
38734 				setState(5219);
38735 				name();
38736 				setState(5225);
38737 				_errHandler.sync(this);
38738 				_la = _input.LA(1);
38739 				while (_la==EQ_ || _la==UNKNOWN) {
38740 					{
38741 					setState(5223);
38742 					_errHandler.sync(this);
38743 					switch (_input.LA(1)) {
38744 					case UNKNOWN:
38745 						{
38746 						setState(5220);
38747 						match(UNKNOWN);
38748 						}
38749 						break;
38750 					case EQ_:
38751 						{
38752 						setState(5221);
38753 						match(EQ_);
38754 						setState(5222);
38755 						identifier();
38756 						}
38757 						break;
38758 					default:
38759 						throw new NoViableAltException(this);
38760 					}
38761 					}
38762 					setState(5227);
38763 					_errHandler.sync(this);
38764 					_la = _input.LA(1);
38765 				}
38766 				setState(5228);
38767 				match(RP_);
38768 				}
38769 				break;
38770 			case 18:
38771 				enterOuterAlt(_localctx, 18);
38772 				{
38773 				setState(5230);
38774 				match(OPTIMIZE);
38775 				setState(5231);
38776 				match(FOR);
38777 				setState(5232);
38778 				match(UNKNOWN);
38779 				}
38780 				break;
38781 			case 19:
38782 				enterOuterAlt(_localctx, 19);
38783 				{
38784 				setState(5233);
38785 				match(PARAMETERIZATION);
38786 				setState(5234);
38787 				_la = _input.LA(1);
38788 				if ( !(_la==SIMPLE || _la==FORCED) ) {
38789 				_errHandler.recoverInline(this);
38790 				}
38791 				else {
38792 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38793 					_errHandler.reportMatch(this);
38794 					consume();
38795 				}
38796 				}
38797 				break;
38798 			case 20:
38799 				enterOuterAlt(_localctx, 20);
38800 				{
38801 				setState(5235);
38802 				match(QUERYTRACEON);
38803 				setState(5236);
38804 				match(INT_NUM_);
38805 				}
38806 				break;
38807 			case 21:
38808 				enterOuterAlt(_localctx, 21);
38809 				{
38810 				setState(5237);
38811 				match(RECOMPILE);
38812 				}
38813 				break;
38814 			case 22:
38815 				enterOuterAlt(_localctx, 22);
38816 				{
38817 				setState(5238);
38818 				match(ROBUST);
38819 				setState(5239);
38820 				match(PLAN);
38821 				}
38822 				break;
38823 			case 23:
38824 				enterOuterAlt(_localctx, 23);
38825 				{
38826 				setState(5240);
38827 				match(USE);
38828 				setState(5241);
38829 				match(HINT);
38830 				setState(5242);
38831 				match(LP_);
38832 				setState(5246);
38833 				_errHandler.sync(this);
38834 				_la = _input.LA(1);
38835 				while (_la==SQ_) {
38836 					{
38837 					{
38838 					setState(5243);
38839 					useHitName();
38840 					}
38841 					}
38842 					setState(5248);
38843 					_errHandler.sync(this);
38844 					_la = _input.LA(1);
38845 				}
38846 				setState(5249);
38847 				match(RP_);
38848 				}
38849 				break;
38850 			case 24:
38851 				enterOuterAlt(_localctx, 24);
38852 				{
38853 				setState(5250);
38854 				match(USE);
38855 				setState(5251);
38856 				match(PLAN);
38857 				setState(5252);
38858 				match(NCHAR_TEXT);
38859 				}
38860 				break;
38861 			}
38862 		}
38863 		catch (RecognitionException re) {
38864 			_localctx.exception = re;
38865 			_errHandler.reportError(this, re);
38866 			_errHandler.recover(this, re);
38867 		}
38868 		finally {
38869 			exitRule();
38870 		}
38871 		return _localctx;
38872 	}
38873 
38874 	public static class UseHitNameContext extends ParserRuleContext {
38875 		public List<TerminalNode> SQ_() { return getTokens(SQLServerStatementParser.SQ_); }
38876 		public TerminalNode SQ_(int i) {
38877 			return getToken(SQLServerStatementParser.SQ_, i);
38878 		}
38879 		public TerminalNode ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS() { return getToken(SQLServerStatementParser.ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS, 0); }
38880 		public TerminalNode ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES() { return getToken(SQLServerStatementParser.ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES, 0); }
38881 		public TerminalNode DISABLE_BATCH_MODE_ADAPTIVE_JOINS() { return getToken(SQLServerStatementParser.DISABLE_BATCH_MODE_ADAPTIVE_JOINS, 0); }
38882 		public TerminalNode DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK() { return getToken(SQLServerStatementParser.DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK, 0); }
38883 		public TerminalNode DISABLE_DEFERRED_COMPILATION_TV() { return getToken(SQLServerStatementParser.DISABLE_DEFERRED_COMPILATION_TV, 0); }
38884 		public TerminalNode DISABLE_INTERLEAVED_EXECUTION_TVF() { return getToken(SQLServerStatementParser.DISABLE_INTERLEAVED_EXECUTION_TVF, 0); }
38885 		public TerminalNode DISABLE_OPTIMIZED_NESTED_LOOP() { return getToken(SQLServerStatementParser.DISABLE_OPTIMIZED_NESTED_LOOP, 0); }
38886 		public TerminalNode DISABLE_OPTIMIZER_ROWGOAL() { return getToken(SQLServerStatementParser.DISABLE_OPTIMIZER_ROWGOAL, 0); }
38887 		public TerminalNode DISABLE_PARAMETER_SNIFFING() { return getToken(SQLServerStatementParser.DISABLE_PARAMETER_SNIFFING, 0); }
38888 		public TerminalNode DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK() { return getToken(SQLServerStatementParser.DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK, 0); }
38889 		public TerminalNode DISABLE_TSQL_SCALAR_UDF_INLINING() { return getToken(SQLServerStatementParser.DISABLE_TSQL_SCALAR_UDF_INLINING, 0); }
38890 		public TerminalNode DISALLOW_BATCH_MODE() { return getToken(SQLServerStatementParser.DISALLOW_BATCH_MODE, 0); }
38891 		public TerminalNode ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS() { return getToken(SQLServerStatementParser.ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS, 0); }
38892 		public TerminalNode ENABLE_QUERY_OPTIMIZER_HOTFIXES() { return getToken(SQLServerStatementParser.ENABLE_QUERY_OPTIMIZER_HOTFIXES, 0); }
38893 		public TerminalNode FORCE_DEFAULT_CARDINALITY_ESTIMATION() { return getToken(SQLServerStatementParser.FORCE_DEFAULT_CARDINALITY_ESTIMATION, 0); }
38894 		public TerminalNode FORCE_LEGACY_CARDINALITY_ESTIMATION() { return getToken(SQLServerStatementParser.FORCE_LEGACY_CARDINALITY_ESTIMATION, 0); }
38895 		public TerminalNode QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n() { return getToken(SQLServerStatementParser.QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n, 0); }
38896 		public TerminalNode QUERY_PLAN_PROFILE() { return getToken(SQLServerStatementParser.QUERY_PLAN_PROFILE, 0); }
38897 		public UseHitNameContext(ParserRuleContext parent, int invokingState) {
38898 			super(parent, invokingState);
38899 		}
38900 		@Override public int getRuleIndex() { return RULE_useHitName; }
38901 		@Override
38902 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38903 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUseHitName(this);
38904 			else return visitor.visitChildren(this);
38905 		}
38906 	}
38907 
38908 	public final UseHitNameContext useHitName() throws RecognitionException {
38909 		UseHitNameContext _localctx = new UseHitNameContext(_ctx, getState());
38910 		enterRule(_localctx, 744, RULE_useHitName);
38911 		try {
38912 			setState(5309);
38913 			_errHandler.sync(this);
38914 			switch ( getInterpreter().adaptivePredict(_input,595,_ctx) ) {
38915 			case 1:
38916 				enterOuterAlt(_localctx, 1);
38917 				{
38918 				setState(5255);
38919 				match(SQ_);
38920 				setState(5256);
38921 				match(ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS);
38922 				setState(5257);
38923 				match(SQ_);
38924 				}
38925 				break;
38926 			case 2:
38927 				enterOuterAlt(_localctx, 2);
38928 				{
38929 				setState(5258);
38930 				match(SQ_);
38931 				setState(5259);
38932 				match(ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES);
38933 				setState(5260);
38934 				match(SQ_);
38935 				}
38936 				break;
38937 			case 3:
38938 				enterOuterAlt(_localctx, 3);
38939 				{
38940 				setState(5261);
38941 				match(SQ_);
38942 				setState(5262);
38943 				match(DISABLE_BATCH_MODE_ADAPTIVE_JOINS);
38944 				setState(5263);
38945 				match(SQ_);
38946 				}
38947 				break;
38948 			case 4:
38949 				enterOuterAlt(_localctx, 4);
38950 				{
38951 				setState(5264);
38952 				match(SQ_);
38953 				setState(5265);
38954 				match(DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK);
38955 				setState(5266);
38956 				match(SQ_);
38957 				}
38958 				break;
38959 			case 5:
38960 				enterOuterAlt(_localctx, 5);
38961 				{
38962 				setState(5267);
38963 				match(SQ_);
38964 				setState(5268);
38965 				match(DISABLE_DEFERRED_COMPILATION_TV);
38966 				setState(5269);
38967 				match(SQ_);
38968 				}
38969 				break;
38970 			case 6:
38971 				enterOuterAlt(_localctx, 6);
38972 				{
38973 				setState(5270);
38974 				match(SQ_);
38975 				setState(5271);
38976 				match(DISABLE_INTERLEAVED_EXECUTION_TVF);
38977 				setState(5272);
38978 				match(SQ_);
38979 				}
38980 				break;
38981 			case 7:
38982 				enterOuterAlt(_localctx, 7);
38983 				{
38984 				setState(5273);
38985 				match(SQ_);
38986 				setState(5274);
38987 				match(DISABLE_OPTIMIZED_NESTED_LOOP);
38988 				setState(5275);
38989 				match(SQ_);
38990 				}
38991 				break;
38992 			case 8:
38993 				enterOuterAlt(_localctx, 8);
38994 				{
38995 				setState(5276);
38996 				match(SQ_);
38997 				setState(5277);
38998 				match(DISABLE_OPTIMIZER_ROWGOAL);
38999 				setState(5278);
39000 				match(SQ_);
39001 				}
39002 				break;
39003 			case 9:
39004 				enterOuterAlt(_localctx, 9);
39005 				{
39006 				setState(5279);
39007 				match(SQ_);
39008 				setState(5280);
39009 				match(DISABLE_PARAMETER_SNIFFING);
39010 				setState(5281);
39011 				match(SQ_);
39012 				}
39013 				break;
39014 			case 10:
39015 				enterOuterAlt(_localctx, 10);
39016 				{
39017 				setState(5282);
39018 				match(SQ_);
39019 				setState(5283);
39020 				match(DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK);
39021 				setState(5284);
39022 				match(SQ_);
39023 				}
39024 				break;
39025 			case 11:
39026 				enterOuterAlt(_localctx, 11);
39027 				{
39028 				setState(5285);
39029 				match(SQ_);
39030 				setState(5286);
39031 				match(DISABLE_TSQL_SCALAR_UDF_INLINING);
39032 				setState(5287);
39033 				match(SQ_);
39034 				}
39035 				break;
39036 			case 12:
39037 				enterOuterAlt(_localctx, 12);
39038 				{
39039 				setState(5288);
39040 				match(SQ_);
39041 				setState(5289);
39042 				match(DISALLOW_BATCH_MODE);
39043 				setState(5290);
39044 				match(SQ_);
39045 				}
39046 				break;
39047 			case 13:
39048 				enterOuterAlt(_localctx, 13);
39049 				{
39050 				setState(5291);
39051 				match(SQ_);
39052 				setState(5292);
39053 				match(ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS);
39054 				setState(5293);
39055 				match(SQ_);
39056 				}
39057 				break;
39058 			case 14:
39059 				enterOuterAlt(_localctx, 14);
39060 				{
39061 				setState(5294);
39062 				match(SQ_);
39063 				setState(5295);
39064 				match(ENABLE_QUERY_OPTIMIZER_HOTFIXES);
39065 				setState(5296);
39066 				match(SQ_);
39067 				}
39068 				break;
39069 			case 15:
39070 				enterOuterAlt(_localctx, 15);
39071 				{
39072 				setState(5297);
39073 				match(SQ_);
39074 				setState(5298);
39075 				match(FORCE_DEFAULT_CARDINALITY_ESTIMATION);
39076 				setState(5299);
39077 				match(SQ_);
39078 				}
39079 				break;
39080 			case 16:
39081 				enterOuterAlt(_localctx, 16);
39082 				{
39083 				setState(5300);
39084 				match(SQ_);
39085 				setState(5301);
39086 				match(FORCE_LEGACY_CARDINALITY_ESTIMATION);
39087 				setState(5302);
39088 				match(SQ_);
39089 				}
39090 				break;
39091 			case 17:
39092 				enterOuterAlt(_localctx, 17);
39093 				{
39094 				setState(5303);
39095 				match(SQ_);
39096 				setState(5304);
39097 				match(QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n);
39098 				setState(5305);
39099 				match(SQ_);
39100 				}
39101 				break;
39102 			case 18:
39103 				enterOuterAlt(_localctx, 18);
39104 				{
39105 				setState(5306);
39106 				match(SQ_);
39107 				setState(5307);
39108 				match(QUERY_PLAN_PROFILE);
39109 				setState(5308);
39110 				match(SQ_);
39111 				}
39112 				break;
39113 			}
39114 		}
39115 		catch (RecognitionException re) {
39116 			_localctx.exception = re;
39117 			_errHandler.reportError(this, re);
39118 			_errHandler.recover(this, re);
39119 		}
39120 		finally {
39121 			exitRule();
39122 		}
39123 		return _localctx;
39124 	}
39125 
39126 	public static class ForClauseContext extends ParserRuleContext {
39127 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
39128 		public TerminalNode BROWSE() { return getToken(SQLServerStatementParser.BROWSE, 0); }
39129 		public ForXmlClauseContext forXmlClause() {
39130 			return getRuleContext(ForXmlClauseContext.class,0);
39131 		}
39132 		public ForJsonClauseContext forJsonClause() {
39133 			return getRuleContext(ForJsonClauseContext.class,0);
39134 		}
39135 		public ForClauseContext(ParserRuleContext parent, int invokingState) {
39136 			super(parent, invokingState);
39137 		}
39138 		@Override public int getRuleIndex() { return RULE_forClause; }
39139 		@Override
39140 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39141 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForClause(this);
39142 			else return visitor.visitChildren(this);
39143 		}
39144 	}
39145 
39146 	public final ForClauseContext forClause() throws RecognitionException {
39147 		ForClauseContext _localctx = new ForClauseContext(_ctx, getState());
39148 		enterRule(_localctx, 746, RULE_forClause);
39149 		try {
39150 			enterOuterAlt(_localctx, 1);
39151 			{
39152 			setState(5311);
39153 			match(FOR);
39154 			setState(5315);
39155 			_errHandler.sync(this);
39156 			switch (_input.LA(1)) {
39157 			case BROWSE:
39158 				{
39159 				setState(5312);
39160 				match(BROWSE);
39161 				}
39162 				break;
39163 			case XML:
39164 				{
39165 				setState(5313);
39166 				forXmlClause();
39167 				}
39168 				break;
39169 			case JSON:
39170 				{
39171 				setState(5314);
39172 				forJsonClause();
39173 				}
39174 				break;
39175 			default:
39176 				throw new NoViableAltException(this);
39177 			}
39178 			}
39179 		}
39180 		catch (RecognitionException re) {
39181 			_localctx.exception = re;
39182 			_errHandler.reportError(this, re);
39183 			_errHandler.recover(this, re);
39184 		}
39185 		finally {
39186 			exitRule();
39187 		}
39188 		return _localctx;
39189 	}
39190 
39191 	public static class ForXmlClauseContext extends ParserRuleContext {
39192 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
39193 		public TerminalNode EXPLICIT() { return getToken(SQLServerStatementParser.EXPLICIT, 0); }
39194 		public TerminalNode PATH() { return getToken(SQLServerStatementParser.PATH, 0); }
39195 		public TerminalNode RAW() { return getToken(SQLServerStatementParser.RAW, 0); }
39196 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
39197 		public CommonDirectivesForXmlContext commonDirectivesForXml() {
39198 			return getRuleContext(CommonDirectivesForXmlContext.class,0);
39199 		}
39200 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
39201 		public TerminalNode LP_(int i) {
39202 			return getToken(SQLServerStatementParser.LP_, i);
39203 		}
39204 		public List<StringLiteralsContext> stringLiterals() {
39205 			return getRuleContexts(StringLiteralsContext.class);
39206 		}
39207 		public StringLiteralsContext stringLiterals(int i) {
39208 			return getRuleContext(StringLiteralsContext.class,i);
39209 		}
39210 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
39211 		public TerminalNode RP_(int i) {
39212 			return getToken(SQLServerStatementParser.RP_, i);
39213 		}
39214 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39215 		public TerminalNode COMMA_(int i) {
39216 			return getToken(SQLServerStatementParser.COMMA_, i);
39217 		}
39218 		public TerminalNode ELEMENTS() { return getToken(SQLServerStatementParser.ELEMENTS, 0); }
39219 		public TerminalNode XMLDATA() { return getToken(SQLServerStatementParser.XMLDATA, 0); }
39220 		public TerminalNode XMLSCHEMA() { return getToken(SQLServerStatementParser.XMLSCHEMA, 0); }
39221 		public TerminalNode XSINIL() { return getToken(SQLServerStatementParser.XSINIL, 0); }
39222 		public TerminalNode ABSENT() { return getToken(SQLServerStatementParser.ABSENT, 0); }
39223 		public ForXmlClauseContext(ParserRuleContext parent, int invokingState) {
39224 			super(parent, invokingState);
39225 		}
39226 		@Override public int getRuleIndex() { return RULE_forXmlClause; }
39227 		@Override
39228 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39229 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForXmlClause(this);
39230 			else return visitor.visitChildren(this);
39231 		}
39232 	}
39233 
39234 	public final ForXmlClauseContext forXmlClause() throws RecognitionException {
39235 		ForXmlClauseContext _localctx = new ForXmlClauseContext(_ctx, getState());
39236 		enterRule(_localctx, 748, RULE_forXmlClause);
39237 		int _la;
39238 		try {
39239 			enterOuterAlt(_localctx, 1);
39240 			{
39241 			setState(5317);
39242 			match(XML);
39243 			setState(5376);
39244 			_errHandler.sync(this);
39245 			switch (_input.LA(1)) {
39246 			case AUTO:
39247 			case RAW:
39248 				{
39249 				setState(5326);
39250 				_errHandler.sync(this);
39251 				switch (_input.LA(1)) {
39252 				case RAW:
39253 					{
39254 					setState(5318);
39255 					match(RAW);
39256 					setState(5323);
39257 					_errHandler.sync(this);
39258 					_la = _input.LA(1);
39259 					if (_la==LP_) {
39260 						{
39261 						setState(5319);
39262 						match(LP_);
39263 						setState(5320);
39264 						stringLiterals();
39265 						setState(5321);
39266 						match(RP_);
39267 						}
39268 					}
39269 
39270 					}
39271 					break;
39272 				case AUTO:
39273 					{
39274 					setState(5325);
39275 					match(AUTO);
39276 					}
39277 					break;
39278 				default:
39279 					throw new NoViableAltException(this);
39280 				}
39281 				setState(5349);
39282 				_errHandler.sync(this);
39283 				switch ( getInterpreter().adaptivePredict(_input,604,_ctx) ) {
39284 				case 1:
39285 					{
39286 					setState(5328);
39287 					commonDirectivesForXml();
39288 					setState(5340);
39289 					_errHandler.sync(this);
39290 					switch ( getInterpreter().adaptivePredict(_input,601,_ctx) ) {
39291 					case 1:
39292 						{
39293 						setState(5329);
39294 						match(COMMA_);
39295 						setState(5338);
39296 						_errHandler.sync(this);
39297 						switch (_input.LA(1)) {
39298 						case XMLDATA:
39299 							{
39300 							setState(5330);
39301 							match(XMLDATA);
39302 							}
39303 							break;
39304 						case XMLSCHEMA:
39305 							{
39306 							setState(5331);
39307 							match(XMLSCHEMA);
39308 							setState(5336);
39309 							_errHandler.sync(this);
39310 							_la = _input.LA(1);
39311 							if (_la==LP_) {
39312 								{
39313 								setState(5332);
39314 								match(LP_);
39315 								setState(5333);
39316 								stringLiterals();
39317 								setState(5334);
39318 								match(RP_);
39319 								}
39320 							}
39321 
39322 							}
39323 							break;
39324 						default:
39325 							throw new NoViableAltException(this);
39326 						}
39327 						}
39328 						break;
39329 					}
39330 					setState(5347);
39331 					_errHandler.sync(this);
39332 					_la = _input.LA(1);
39333 					if (_la==COMMA_) {
39334 						{
39335 						setState(5342);
39336 						match(COMMA_);
39337 						setState(5343);
39338 						match(ELEMENTS);
39339 						setState(5345);
39340 						_errHandler.sync(this);
39341 						_la = _input.LA(1);
39342 						if (_la==XSINIL || _la==ABSENT) {
39343 							{
39344 							setState(5344);
39345 							_la = _input.LA(1);
39346 							if ( !(_la==XSINIL || _la==ABSENT) ) {
39347 							_errHandler.recoverInline(this);
39348 							}
39349 							else {
39350 								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39351 								_errHandler.reportMatch(this);
39352 								consume();
39353 							}
39354 							}
39355 						}
39356 
39357 						}
39358 					}
39359 
39360 					}
39361 					break;
39362 				}
39363 				}
39364 				break;
39365 			case EXPLICIT:
39366 				{
39367 				setState(5351);
39368 				match(EXPLICIT);
39369 				setState(5357);
39370 				_errHandler.sync(this);
39371 				switch ( getInterpreter().adaptivePredict(_input,606,_ctx) ) {
39372 				case 1:
39373 					{
39374 					setState(5352);
39375 					commonDirectivesForXml();
39376 					setState(5355);
39377 					_errHandler.sync(this);
39378 					_la = _input.LA(1);
39379 					if (_la==COMMA_) {
39380 						{
39381 						setState(5353);
39382 						match(COMMA_);
39383 						setState(5354);
39384 						match(XMLDATA);
39385 						}
39386 					}
39387 
39388 					}
39389 					break;
39390 				}
39391 				}
39392 				break;
39393 			case PATH:
39394 				{
39395 				setState(5359);
39396 				match(PATH);
39397 				setState(5364);
39398 				_errHandler.sync(this);
39399 				_la = _input.LA(1);
39400 				if (_la==LP_) {
39401 					{
39402 					setState(5360);
39403 					match(LP_);
39404 					setState(5361);
39405 					stringLiterals();
39406 					setState(5362);
39407 					match(RP_);
39408 					}
39409 				}
39410 
39411 				setState(5374);
39412 				_errHandler.sync(this);
39413 				switch ( getInterpreter().adaptivePredict(_input,610,_ctx) ) {
39414 				case 1:
39415 					{
39416 					setState(5366);
39417 					commonDirectivesForXml();
39418 					setState(5372);
39419 					_errHandler.sync(this);
39420 					_la = _input.LA(1);
39421 					if (_la==COMMA_) {
39422 						{
39423 						setState(5367);
39424 						match(COMMA_);
39425 						setState(5368);
39426 						match(ELEMENTS);
39427 						setState(5370);
39428 						_errHandler.sync(this);
39429 						_la = _input.LA(1);
39430 						if (_la==XSINIL || _la==ABSENT) {
39431 							{
39432 							setState(5369);
39433 							_la = _input.LA(1);
39434 							if ( !(_la==XSINIL || _la==ABSENT) ) {
39435 							_errHandler.recoverInline(this);
39436 							}
39437 							else {
39438 								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39439 								_errHandler.reportMatch(this);
39440 								consume();
39441 							}
39442 							}
39443 						}
39444 
39445 						}
39446 					}
39447 
39448 					}
39449 					break;
39450 				}
39451 				}
39452 				break;
39453 			default:
39454 				throw new NoViableAltException(this);
39455 			}
39456 			}
39457 		}
39458 		catch (RecognitionException re) {
39459 			_localctx.exception = re;
39460 			_errHandler.reportError(this, re);
39461 			_errHandler.recover(this, re);
39462 		}
39463 		finally {
39464 			exitRule();
39465 		}
39466 		return _localctx;
39467 	}
39468 
39469 	public static class CommonDirectivesForXmlContext extends ParserRuleContext {
39470 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39471 		public TerminalNode COMMA_(int i) {
39472 			return getToken(SQLServerStatementParser.COMMA_, i);
39473 		}
39474 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
39475 		public TerminalNode BASE64() { return getToken(SQLServerStatementParser.BASE64, 0); }
39476 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
39477 		public TerminalNode ROOT() { return getToken(SQLServerStatementParser.ROOT, 0); }
39478 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
39479 		public StringLiteralsContext stringLiterals() {
39480 			return getRuleContext(StringLiteralsContext.class,0);
39481 		}
39482 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
39483 		public CommonDirectivesForXmlContext(ParserRuleContext parent, int invokingState) {
39484 			super(parent, invokingState);
39485 		}
39486 		@Override public int getRuleIndex() { return RULE_commonDirectivesForXml; }
39487 		@Override
39488 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39489 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommonDirectivesForXml(this);
39490 			else return visitor.visitChildren(this);
39491 		}
39492 	}
39493 
39494 	public final CommonDirectivesForXmlContext commonDirectivesForXml() throws RecognitionException {
39495 		CommonDirectivesForXmlContext _localctx = new CommonDirectivesForXmlContext(_ctx, getState());
39496 		enterRule(_localctx, 750, RULE_commonDirectivesForXml);
39497 		int _la;
39498 		try {
39499 			enterOuterAlt(_localctx, 1);
39500 			{
39501 			setState(5381);
39502 			_errHandler.sync(this);
39503 			switch ( getInterpreter().adaptivePredict(_input,612,_ctx) ) {
39504 			case 1:
39505 				{
39506 				setState(5378);
39507 				match(COMMA_);
39508 				setState(5379);
39509 				match(BINARY);
39510 				setState(5380);
39511 				match(BASE64);
39512 				}
39513 				break;
39514 			}
39515 			setState(5385);
39516 			_errHandler.sync(this);
39517 			switch ( getInterpreter().adaptivePredict(_input,613,_ctx) ) {
39518 			case 1:
39519 				{
39520 				setState(5383);
39521 				match(COMMA_);
39522 				setState(5384);
39523 				match(TYPE);
39524 				}
39525 				break;
39526 			}
39527 			setState(5395);
39528 			_errHandler.sync(this);
39529 			switch ( getInterpreter().adaptivePredict(_input,615,_ctx) ) {
39530 			case 1:
39531 				{
39532 				setState(5387);
39533 				match(COMMA_);
39534 				setState(5388);
39535 				match(ROOT);
39536 				setState(5393);
39537 				_errHandler.sync(this);
39538 				_la = _input.LA(1);
39539 				if (_la==LP_) {
39540 					{
39541 					setState(5389);
39542 					match(LP_);
39543 					setState(5390);
39544 					stringLiterals();
39545 					setState(5391);
39546 					match(RP_);
39547 					}
39548 				}
39549 
39550 				}
39551 				break;
39552 			}
39553 			}
39554 		}
39555 		catch (RecognitionException re) {
39556 			_localctx.exception = re;
39557 			_errHandler.reportError(this, re);
39558 			_errHandler.recover(this, re);
39559 		}
39560 		finally {
39561 			exitRule();
39562 		}
39563 		return _localctx;
39564 	}
39565 
39566 	public static class ForJsonClauseContext extends ParserRuleContext {
39567 		public TerminalNode JSON() { return getToken(SQLServerStatementParser.JSON, 0); }
39568 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
39569 		public TerminalNode PATH() { return getToken(SQLServerStatementParser.PATH, 0); }
39570 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39571 		public TerminalNode COMMA_(int i) {
39572 			return getToken(SQLServerStatementParser.COMMA_, i);
39573 		}
39574 		public TerminalNode ROOT() { return getToken(SQLServerStatementParser.ROOT, 0); }
39575 		public TerminalNode INCLUDE_NULL_VALUES() { return getToken(SQLServerStatementParser.INCLUDE_NULL_VALUES, 0); }
39576 		public TerminalNode WITHOUT_ARRAY_WRAPPER() { return getToken(SQLServerStatementParser.WITHOUT_ARRAY_WRAPPER, 0); }
39577 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
39578 		public StringLiteralsContext stringLiterals() {
39579 			return getRuleContext(StringLiteralsContext.class,0);
39580 		}
39581 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
39582 		public ForJsonClauseContext(ParserRuleContext parent, int invokingState) {
39583 			super(parent, invokingState);
39584 		}
39585 		@Override public int getRuleIndex() { return RULE_forJsonClause; }
39586 		@Override
39587 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39588 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForJsonClause(this);
39589 			else return visitor.visitChildren(this);
39590 		}
39591 	}
39592 
39593 	public final ForJsonClauseContext forJsonClause() throws RecognitionException {
39594 		ForJsonClauseContext _localctx = new ForJsonClauseContext(_ctx, getState());
39595 		enterRule(_localctx, 752, RULE_forJsonClause);
39596 		int _la;
39597 		try {
39598 			enterOuterAlt(_localctx, 1);
39599 			{
39600 			setState(5397);
39601 			match(JSON);
39602 			{
39603 			setState(5398);
39604 			_la = _input.LA(1);
39605 			if ( !(_la==AUTO || _la==PATH) ) {
39606 			_errHandler.recoverInline(this);
39607 			}
39608 			else {
39609 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39610 				_errHandler.reportMatch(this);
39611 				consume();
39612 			}
39613 			setState(5417);
39614 			_errHandler.sync(this);
39615 			switch ( getInterpreter().adaptivePredict(_input,620,_ctx) ) {
39616 			case 1:
39617 				{
39618 				setState(5407);
39619 				_errHandler.sync(this);
39620 				switch ( getInterpreter().adaptivePredict(_input,617,_ctx) ) {
39621 				case 1:
39622 					{
39623 					setState(5399);
39624 					match(COMMA_);
39625 					setState(5400);
39626 					match(ROOT);
39627 					setState(5405);
39628 					_errHandler.sync(this);
39629 					_la = _input.LA(1);
39630 					if (_la==LP_) {
39631 						{
39632 						setState(5401);
39633 						match(LP_);
39634 						setState(5402);
39635 						stringLiterals();
39636 						setState(5403);
39637 						match(RP_);
39638 						}
39639 					}
39640 
39641 					}
39642 					break;
39643 				}
39644 				setState(5411);
39645 				_errHandler.sync(this);
39646 				switch ( getInterpreter().adaptivePredict(_input,618,_ctx) ) {
39647 				case 1:
39648 					{
39649 					setState(5409);
39650 					match(COMMA_);
39651 					setState(5410);
39652 					match(INCLUDE_NULL_VALUES);
39653 					}
39654 					break;
39655 				}
39656 				setState(5415);
39657 				_errHandler.sync(this);
39658 				_la = _input.LA(1);
39659 				if (_la==COMMA_) {
39660 					{
39661 					setState(5413);
39662 					match(COMMA_);
39663 					setState(5414);
39664 					match(WITHOUT_ARRAY_WRAPPER);
39665 					}
39666 				}
39667 
39668 				}
39669 				break;
39670 			}
39671 			}
39672 			}
39673 		}
39674 		catch (RecognitionException re) {
39675 			_localctx.exception = re;
39676 			_errHandler.reportError(this, re);
39677 			_errHandler.recover(this, re);
39678 		}
39679 		finally {
39680 			exitRule();
39681 		}
39682 		return _localctx;
39683 	}
39684 
39685 	public static class SelectWithClauseContext extends ParserRuleContext {
39686 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
39687 		public XmlNamespacesClauseContext xmlNamespacesClause() {
39688 			return getRuleContext(XmlNamespacesClauseContext.class,0);
39689 		}
39690 		public CteClauseSetContext cteClauseSet() {
39691 			return getRuleContext(CteClauseSetContext.class,0);
39692 		}
39693 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
39694 		public SelectWithClauseContext(ParserRuleContext parent, int invokingState) {
39695 			super(parent, invokingState);
39696 		}
39697 		@Override public int getRuleIndex() { return RULE_selectWithClause; }
39698 		@Override
39699 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39700 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelectWithClause(this);
39701 			else return visitor.visitChildren(this);
39702 		}
39703 	}
39704 
39705 	public final SelectWithClauseContext selectWithClause() throws RecognitionException {
39706 		SelectWithClauseContext _localctx = new SelectWithClauseContext(_ctx, getState());
39707 		enterRule(_localctx, 754, RULE_selectWithClause);
39708 		int _la;
39709 		try {
39710 			enterOuterAlt(_localctx, 1);
39711 			{
39712 			setState(5419);
39713 			match(WITH);
39714 			setState(5424);
39715 			_errHandler.sync(this);
39716 			_la = _input.LA(1);
39717 			if (_la==XMLNAMESPACES) {
39718 				{
39719 				setState(5420);
39720 				xmlNamespacesClause();
39721 				setState(5422);
39722 				_errHandler.sync(this);
39723 				_la = _input.LA(1);
39724 				if (_la==COMMA_) {
39725 					{
39726 					setState(5421);
39727 					match(COMMA_);
39728 					}
39729 				}
39730 
39731 				}
39732 			}
39733 
39734 			setState(5427);
39735 			_errHandler.sync(this);
39736 			_la = _input.LA(1);
39737 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (GROUP - 53)))) != 0) || ((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (LIMIT - 121)) | (1L << (OFFSET - 121)) | (1L << (SAVEPOINT - 121)) | (1L << (BOOLEAN - 121)) | (1L << (ARRAY - 121)) | (1L << (DATE - 121)) | (1L << (LOCALTIME - 121)) | (1L << (LOCALTIMESTAMP - 121)) | (1L << (QUARTER - 121)) | (1L << (WEEK - 121)) | (1L << (DAY - 121)) | (1L << (MICROSECOND - 121)) | (1L << (MAX - 121)) | (1L << (MIN - 121)) | (1L << (SUM - 121)) | (1L << (COUNT - 121)) | (1L << (AVG - 121)) | (1L << (ENABLE - 121)) | (1L << (DISABLE - 121)) | (1L << (INSTANCE - 121)) | (1L << (DO - 121)) | (1L << (DEFINER - 121)) | (1L << (SQL - 121)) | (1L << (CASCADED - 121)) | (1L << (LOCAL - 121)) | (1L << (NEXT - 121)) | (1L << (NAME - 121)) | (1L << (INTEGER - 121)) | (1L << (TYPE - 121)))) != 0) || ((((_la - 201)) & ~0x3f) == 0 && ((1L << (_la - 201)) & ((1L << (READ_ONLY - 201)) | (1L << (DATABASE - 201)) | (1L << (DATEPART - 201)) | (1L << (PASSWORD - 201)) | (1L << (BINARY - 201)) | (1L << (HIDDEN_ - 201)) | (1L << (MOD - 201)) | (1L << (PARTITION - 201)) | (1L << (PARTITIONS - 201)) | (1L << (TOP - 201)) | (1L << (ROW - 201)) | (1L << (ROWS - 201)) | (1L << (XOR - 201)) | (1L << (ALWAYS - 201)) | (1L << (ROLE - 201)) | (1L << (START - 201)) | (1L << (ALGORITHM - 201)) | (1L << (AUTO - 201)) | (1L << (BLOCKERS - 201)) | (1L << (CLUSTERED - 201)) | (1L << (NONCLUSTERED - 201)) | (1L << (COLUMNSTORE - 201)) | (1L << (CONTENT - 201)) | (1L << (YEARS - 201)) | (1L << (MONTHS - 201)) | (1L << (WEEKS - 201)) | (1L << (DAYS - 201)) | (1L << (MINUTES - 201)) | (1L << (DENY - 201)) | (1L << (DETERMINISTIC - 201)) | (1L << (DISTRIBUTION - 201)) | (1L << (DOCUMENT - 201)) | (1L << (DURABILITY - 201)) | (1L << (ENCRYPTED - 201)) | (1L << (FILESTREAM - 201)) | (1L << (FILETABLE - 201)) | (1L << (FILLFACTOR - 201)) | (1L << (FOLLOWING - 201)) | (1L << (HASH - 201)) | (1L << (HEAP - 201)))) != 0) || ((((_la - 266)) & ~0x3f) == 0 && ((1L << (_la - 266)) & ((1L << (INBOUND - 266)) | (1L << (OUTBOUND - 266)) | (1L << (UNBOUNDED - 266)) | (1L << (INFINITE - 266)) | (1L << (LOGIN - 266)) | (1L << (MASKED - 266)) | (1L << (MAXDOP - 266)) | (1L << (MOVE - 266)) | (1L << (NOCHECK - 266)) | (1L << (OBJECT - 266)) | (1L << (OFF - 266)) | (1L << (ONLINE - 266)) | (1L << (OVER - 266)) | (1L << (PAGE - 266)) | (1L << (PAUSED - 266)) | (1L << (PERIOD - 266)) | (1L << (PERSISTED - 266)) | (1L << (PRECEDING - 266)) | (1L << (RANDOMIZED - 266)) | (1L << (RANGE - 266)) | (1L << (REBUILD - 266)) | (1L << (REPLICATE - 266)) | (1L << (REPLICATION - 266)) | (1L << (RESUMABLE - 266)) | (1L << (ROWGUIDCOL - 266)) | (1L << (SAVE - 266)) | (1L << (SELF - 266)) | (1L << (SPARSE - 266)) | (1L << (SWITCH - 266)) | (1L << (TRAN - 266)) | (1L << (TRANCOUNT - 266)) | (1L << (CONTROL - 266)) | (1L << (CONCAT - 266)) | (1L << (TAKE - 266)) | (1L << (OWNERSHIP - 266)) | (1L << (DEFINITION - 266)) | (1L << (APPLICATION - 266)) | (1L << (ASSEMBLY - 266)) | (1L << (SYMMETRIC - 266)) | (1L << (ASYMMETRIC - 266)) | (1L << (SERVER - 266)) | (1L << (RECEIVE - 266)) | (1L << (CHANGE - 266)) | (1L << (TRACE - 266)) | (1L << (TRACKING - 266)) | (1L << (RESOURCES - 266)) | (1L << (SETTINGS - 266)) | (1L << (STATE - 266)) | (1L << (AVAILABILITY - 266)) | (1L << (CREDENTIAL - 266)) | (1L << (ENDPOINT - 266)) | (1L << (EVENT - 266)) | (1L << (NOTIFICATION - 266)) | (1L << (LINKED - 266)) | (1L << (AUDIT - 266)) | (1L << (DDL - 266)))) != 0) || ((((_la - 330)) & ~0x3f) == 0 && ((1L << (_la - 330)) & ((1L << (XML - 330)) | (1L << (IMPERSONATE - 330)) | (1L << (SECURABLES - 330)) | (1L << (AUTHENTICATE - 330)) | (1L << (EXTERNAL - 330)) | (1L << (ACCESS - 330)) | (1L << (ADMINISTER - 330)) | (1L << (BULK - 330)) | (1L << (OPERATIONS - 330)) | (1L << (UNSAFE - 330)) | (1L << (SHUTDOWN - 330)) | (1L << (SCOPED - 330)) | (1L << (CONFIGURATION - 330)) | (1L << (DATASPACE - 330)) | (1L << (SERVICE - 330)) | (1L << (CERTIFICATE - 330)) | (1L << (CONTRACT - 330)) | (1L << (ENCRYPTION - 330)) | (1L << (MASTER - 330)) | (1L << (DATA - 330)) | (1L << (SOURCE - 330)) | (1L << (FILE - 330)) | (1L << (FORMAT - 330)) | (1L << (LIBRARY - 330)) | (1L << (FULLTEXT - 330)) | (1L << (MASK - 330)) | (1L << (UNMASK - 330)) | (1L << (MESSAGE - 330)) | (1L << (REMOTE - 330)) | (1L << (BINDING - 330)) | (1L << (ROUTE - 330)) | (1L << (SECURITY - 330)) | (1L << (POLICY - 330)) | (1L << (AGGREGATE - 330)) | (1L << (QUEUE - 330)) | (1L << (RULE - 330)) | (1L << (SYNONYM - 330)) | (1L << (COLLECTION - 330)) | (1L << (SCRIPT - 330)) | (1L << (KILL - 330)) | (1L << (BACKUP - 330)) | (1L << (LOG - 330)) | (1L << (SHOWPLAN - 330)) | (1L << (SUBSCRIBE - 330)) | (1L << (QUERY - 330)) | (1L << (NOTIFICATIONS - 330)) | (1L << (CHECKPOINT - 330)) | (1L << (SEQUENCE - 330)) | (1L << (ABORT_AFTER_WAIT - 330)) | (1L << (ALLOW_PAGE_LOCKS - 330)) | (1L << (ALLOW_ROW_LOCKS - 330)) | (1L << (ALL_SPARSE_COLUMNS - 330)) | (1L << (BUCKET_COUNT - 330)) | (1L << (COLUMNSTORE_ARCHIVE - 330)) | (1L << (COLUMN_ENCRYPTION_KEY - 330)) | (1L << (COLUMN_SET - 330)) | (1L << (COMPRESSION_DELAY - 330)) | (1L << (DATABASE_DEAULT - 330)) | (1L << (DATA_COMPRESSION - 330)) | (1L << (DATA_CONSISTENCY_CHECK - 330)) | (1L << (ENCRYPTION_TYPE - 330)) | (1L << (SYSTEM_TIME - 330)) | (1L << (SYSTEM_VERSIONING - 330)) | (1L << (TEXTIMAGE_ON - 330)))) != 0) || ((((_la - 394)) & ~0x3f) == 0 && ((1L << (_la - 394)) & ((1L << (WAIT_AT_LOW_PRIORITY - 394)) | (1L << (STATISTICS_INCREMENTAL - 394)) | (1L << (STATISTICS_NORECOMPUTE - 394)) | (1L << (ROUND_ROBIN - 394)) | (1L << (SCHEMA_AND_DATA - 394)) | (1L << (SCHEMA_ONLY - 394)) | (1L << (SORT_IN_TEMPDB - 394)) | (1L << (IGNORE_DUP_KEY - 394)) | (1L << (IMPLICIT_TRANSACTIONS - 394)) | (1L << (MAX_DURATION - 394)) | (1L << (MEMORY_OPTIMIZED - 394)) | (1L << (MIGRATION_STATE - 394)) | (1L << (PAD_INDEX - 394)) | (1L << (REMOTE_DATA_ARCHIVE - 394)) | (1L << (FILESTREAM_ON - 394)) | (1L << (FILETABLE_COLLATE_FILENAME - 394)) | (1L << (FILETABLE_DIRECTORY - 394)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 394)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 394)) | (1L << (FILTER_PREDICATE - 394)) | (1L << (HISTORY_RETENTION_PERIOD - 394)) | (1L << (HISTORY_TABLE - 394)) | (1L << (LOCK_ESCALATION - 394)) | (1L << (DROP_EXISTING - 394)) | (1L << (ROW_NUMBER - 394)) | (1L << (FIRST - 394)) | (1L << (DATETIME2 - 394)) | (1L << (OUTPUT - 394)) | (1L << (INSERTED - 394)) | (1L << (DELETED - 394)))) != 0) || ((((_la - 478)) & ~0x3f) == 0 && ((1L << (_la - 478)) & ((1L << (FILENAME - 478)) | (1L << (MAXSIZE - 478)) | (1L << (FILEGROWTH - 478)) | (1L << (UNLIMITED - 478)) | (1L << (KB - 478)) | (1L << (MB - 478)) | (1L << (GB - 478)) | (1L << (TB - 478)) | (1L << (MEMORY_OPTIMIZED_DATA - 478)) | (1L << (FILEGROUP - 478)) | (1L << (NON_TRANSACTED_ACCESS - 478)) | (1L << (DB_CHAINING - 478)) | (1L << (TRUSTWORTHY - 478)) | (1L << (FORWARD_ONLY - 478)) | (1L << (KEYSET - 478)) | (1L << (FAST_FORWARD - 478)) | (1L << (SCROLL_LOCKS - 478)) | (1L << (OPTIMISTIC - 478)) | (1L << (TYPE_WARNING - 478)) | (1L << (SCHEMABINDING - 478)) | (1L << (CALLER - 478)) | (1L << (OWNER - 478)) | (1L << (SNAPSHOT - 478)) | (1L << (REPEATABLE - 478)) | (1L << (SERIALIZABLE - 478)) | (1L << (NATIVE_COMPILATION - 478)) | (1L << (VIEW_METADATA - 478)) | (1L << (INSTEAD - 478)) | (1L << (APPEND - 478)) | (1L << (INCREMENT - 478)) | (1L << (CACHE - 478)) | (1L << (MINVALUE - 478)) | (1L << (MAXVALUE - 478)) | (1L << (RESTART - 478)) | (1L << (LOB_COMPACTION - 478)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 478)) | (1L << (REORGANIZE - 478)) | (1L << (RESUME - 478)) | (1L << (PAUSE - 478)) | (1L << (ABORT - 478)))) != 0) || ((((_la - 544)) & ~0x3f) == 0 && ((1L << (_la - 544)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 544)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 544)) | (1L << (IMMEDIATE - 544)) | (1L << (NO_WAIT - 544)) | (1L << (TARGET_RECOVERY_TIME - 544)) | (1L << (SECONDS - 544)) | (1L << (HONOR_BROKER_PRIORITY - 544)) | (1L << (ERROR_BROKER_CONVERSATIONS - 544)) | (1L << (NEW_BROKER - 544)) | (1L << (DISABLE_BROKER - 544)) | (1L << (ENABLE_BROKER - 544)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 544)) | (1L << (READ_COMMITTED_SNAPSHOT - 544)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 544)) | (1L << (RECURSIVE_TRIGGERS - 544)) | (1L << (QUOTED_IDENTIFIER - 544)) | (1L << (NUMERIC_ROUNDABORT - 544)) | (1L << (CONCAT_NULL_YIELDS_NULL - 544)) | (1L << (COMPATIBILITY_LEVEL - 544)) | (1L << (ARITHABORT - 544)) | (1L << (ANSI_WARNINGS - 544)) | (1L << (ANSI_PADDING - 544)) | (1L << (ANSI_NULLS - 544)) | (1L << (ANSI_NULL_DEFAULT - 544)) | (1L << (PAGE_VERIFY - 544)) | (1L << (CHECKSUM - 544)) | (1L << (TORN_PAGE_DETECTION - 544)) | (1L << (BULK_LOGGED - 544)) | (1L << (RECOVERY - 544)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 544)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 544)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 544)) | (1L << (EXECUTION_COUNT - 544)) | (1L << (QUERY_CAPTURE_POLICY - 544)) | (1L << (WAIT_STATS_CAPTURE_MODE - 544)) | (1L << (MAX_PLANS_PER_QUERY - 544)) | (1L << (QUERY_CAPTURE_MODE - 544)) | (1L << (SIZE_BASED_CLEANUP_MODE - 544)) | (1L << (INTERVAL_LENGTH_MINUTES - 544)) | (1L << (MAX_STORAGE_SIZE_MB - 544)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 544)) | (1L << (CLEANUP_POLICY - 544)) | (1L << (CUSTOM - 544)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 544)) | (1L << (OPERATION_MODE - 544)) | (1L << (QUERY_STORE - 544)) | (1L << (CURSOR_DEFAULT - 544)) | (1L << (GLOBAL - 544)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 544)) | (1L << (HOURS - 544)) | (1L << (CHANGE_RETENTION - 544)) | (1L << (AUTO_CLEANUP - 544)) | (1L << (CHANGE_TRACKING - 544)) | (1L << (AUTOMATIC_TUNING - 544)) | (1L << (FORCE_LAST_GOOD_PLAN - 544)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 544)) | (1L << (AUTO_UPDATE_STATISTICS - 544)) | (1L << (AUTO_SHRINK - 544)) | (1L << (AUTO_CREATE_STATISTICS - 544)) | (1L << (INCREMENTAL - 544)) | (1L << (AUTO_CLOSE - 544)) | (1L << (DATA_RETENTION - 544)) | (1L << (TEMPORAL_HISTORY_RETENTION - 544)) | (1L << (EDITION - 544)))) != 0) || ((((_la - 608)) & ~0x3f) == 0 && ((1L << (_la - 608)) & ((1L << (MIXED_PAGE_ALLOCATION - 608)) | (1L << (DISABLED - 608)) | (1L << (ALLOWED - 608)) | (1L << (HADR - 608)) | (1L << (MULTI_USER - 608)) | (1L << (RESTRICTED_USER - 608)) | (1L << (SINGLE_USER - 608)) | (1L << (OFFLINE - 608)) | (1L << (EMERGENCY - 608)) | (1L << (SUSPEND - 608)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 608)) | (1L << (ELASTIC_POOL - 608)) | (1L << (SERVICE_OBJECTIVE - 608)) | (1L << (DATABASE_NAME - 608)) | (1L << (ALLOW_CONNECTIONS - 608)) | (1L << (GEO - 608)) | (1L << (NAMED - 608)) | (1L << (DATEFIRST - 608)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 608)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 608)) | (1L << (SECONDARY - 608)) | (1L << (FAILOVER - 608)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 608)) | (1L << (DEFAULT_LANGUAGE - 608)) | (1L << (INLINE - 608)) | (1L << (NESTED_TRIGGERS - 608)) | (1L << (TRANSFORM_NOISE_WORDS - 608)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 608)) | (1L << (PERSISTENT_LOG_BUFFER - 608)) | (1L << (DIRECTORY_NAME - 608)) | (1L << (DATEFORMAT - 608)) | (1L << (DELAYED_DURABILITY - 608)) | (1L << (AUTHORIZATION - 608)) | (1L << (TRANSFER - 608)) | (1L << (SEARCH - 608)) | (1L << (MEMBER - 608)))) != 0) || _la==IDENTIFIER_ || _la==DELIMITED_IDENTIFIER_) {
39738 				{
39739 				setState(5426);
39740 				cteClauseSet();
39741 				}
39742 			}
39743 
39744 			}
39745 		}
39746 		catch (RecognitionException re) {
39747 			_localctx.exception = re;
39748 			_errHandler.reportError(this, re);
39749 			_errHandler.recover(this, re);
39750 		}
39751 		finally {
39752 			exitRule();
39753 		}
39754 		return _localctx;
39755 	}
39756 
39757 	public static class XmlNamespacesClauseContext extends ParserRuleContext {
39758 		public TerminalNode XMLNAMESPACES() { return getToken(SQLServerStatementParser.XMLNAMESPACES, 0); }
39759 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
39760 		public List<XmlNamespaceDeclarationItemContext> xmlNamespaceDeclarationItem() {
39761 			return getRuleContexts(XmlNamespaceDeclarationItemContext.class);
39762 		}
39763 		public XmlNamespaceDeclarationItemContext xmlNamespaceDeclarationItem(int i) {
39764 			return getRuleContext(XmlNamespaceDeclarationItemContext.class,i);
39765 		}
39766 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
39767 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39768 		public TerminalNode COMMA_(int i) {
39769 			return getToken(SQLServerStatementParser.COMMA_, i);
39770 		}
39771 		public XmlNamespacesClauseContext(ParserRuleContext parent, int invokingState) {
39772 			super(parent, invokingState);
39773 		}
39774 		@Override public int getRuleIndex() { return RULE_xmlNamespacesClause; }
39775 		@Override
39776 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39777 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespacesClause(this);
39778 			else return visitor.visitChildren(this);
39779 		}
39780 	}
39781 
39782 	public final XmlNamespacesClauseContext xmlNamespacesClause() throws RecognitionException {
39783 		XmlNamespacesClauseContext _localctx = new XmlNamespacesClauseContext(_ctx, getState());
39784 		enterRule(_localctx, 756, RULE_xmlNamespacesClause);
39785 		int _la;
39786 		try {
39787 			enterOuterAlt(_localctx, 1);
39788 			{
39789 			setState(5429);
39790 			match(XMLNAMESPACES);
39791 			setState(5430);
39792 			match(LP_);
39793 			setState(5431);
39794 			xmlNamespaceDeclarationItem();
39795 			setState(5436);
39796 			_errHandler.sync(this);
39797 			_la = _input.LA(1);
39798 			while (_la==COMMA_) {
39799 				{
39800 				{
39801 				setState(5432);
39802 				match(COMMA_);
39803 				setState(5433);
39804 				xmlNamespaceDeclarationItem();
39805 				}
39806 				}
39807 				setState(5438);
39808 				_errHandler.sync(this);
39809 				_la = _input.LA(1);
39810 			}
39811 			setState(5439);
39812 			match(RP_);
39813 			}
39814 		}
39815 		catch (RecognitionException re) {
39816 			_localctx.exception = re;
39817 			_errHandler.reportError(this, re);
39818 			_errHandler.recover(this, re);
39819 		}
39820 		finally {
39821 			exitRule();
39822 		}
39823 		return _localctx;
39824 	}
39825 
39826 	public static class XmlNamespaceDeclarationItemContext extends ParserRuleContext {
39827 		public XmlNamespaceUriContext xmlNamespaceUri() {
39828 			return getRuleContext(XmlNamespaceUriContext.class,0);
39829 		}
39830 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
39831 		public XmlNamespacePrefixContext xmlNamespacePrefix() {
39832 			return getRuleContext(XmlNamespacePrefixContext.class,0);
39833 		}
39834 		public XmlDefaultNamespaceDeclarationItemContext xmlDefaultNamespaceDeclarationItem() {
39835 			return getRuleContext(XmlDefaultNamespaceDeclarationItemContext.class,0);
39836 		}
39837 		public XmlNamespaceDeclarationItemContext(ParserRuleContext parent, int invokingState) {
39838 			super(parent, invokingState);
39839 		}
39840 		@Override public int getRuleIndex() { return RULE_xmlNamespaceDeclarationItem; }
39841 		@Override
39842 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39843 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespaceDeclarationItem(this);
39844 			else return visitor.visitChildren(this);
39845 		}
39846 	}
39847 
39848 	public final XmlNamespaceDeclarationItemContext xmlNamespaceDeclarationItem() throws RecognitionException {
39849 		XmlNamespaceDeclarationItemContext _localctx = new XmlNamespaceDeclarationItemContext(_ctx, getState());
39850 		enterRule(_localctx, 758, RULE_xmlNamespaceDeclarationItem);
39851 		try {
39852 			setState(5446);
39853 			_errHandler.sync(this);
39854 			switch (_input.LA(1)) {
39855 			case STRING_:
39856 			case NCHAR_TEXT:
39857 				enterOuterAlt(_localctx, 1);
39858 				{
39859 				setState(5441);
39860 				xmlNamespaceUri();
39861 				setState(5442);
39862 				match(AS);
39863 				setState(5443);
39864 				xmlNamespacePrefix();
39865 				}
39866 				break;
39867 			case DEFAULT:
39868 				enterOuterAlt(_localctx, 2);
39869 				{
39870 				setState(5445);
39871 				xmlDefaultNamespaceDeclarationItem();
39872 				}
39873 				break;
39874 			default:
39875 				throw new NoViableAltException(this);
39876 			}
39877 		}
39878 		catch (RecognitionException re) {
39879 			_localctx.exception = re;
39880 			_errHandler.reportError(this, re);
39881 			_errHandler.recover(this, re);
39882 		}
39883 		finally {
39884 			exitRule();
39885 		}
39886 		return _localctx;
39887 	}
39888 
39889 	public static class XmlNamespaceUriContext extends ParserRuleContext {
39890 		public StringLiteralsContext stringLiterals() {
39891 			return getRuleContext(StringLiteralsContext.class,0);
39892 		}
39893 		public XmlNamespaceUriContext(ParserRuleContext parent, int invokingState) {
39894 			super(parent, invokingState);
39895 		}
39896 		@Override public int getRuleIndex() { return RULE_xmlNamespaceUri; }
39897 		@Override
39898 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39899 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespaceUri(this);
39900 			else return visitor.visitChildren(this);
39901 		}
39902 	}
39903 
39904 	public final XmlNamespaceUriContext xmlNamespaceUri() throws RecognitionException {
39905 		XmlNamespaceUriContext _localctx = new XmlNamespaceUriContext(_ctx, getState());
39906 		enterRule(_localctx, 760, RULE_xmlNamespaceUri);
39907 		try {
39908 			enterOuterAlt(_localctx, 1);
39909 			{
39910 			setState(5448);
39911 			stringLiterals();
39912 			}
39913 		}
39914 		catch (RecognitionException re) {
39915 			_localctx.exception = re;
39916 			_errHandler.reportError(this, re);
39917 			_errHandler.recover(this, re);
39918 		}
39919 		finally {
39920 			exitRule();
39921 		}
39922 		return _localctx;
39923 	}
39924 
39925 	public static class XmlNamespacePrefixContext extends ParserRuleContext {
39926 		public IdentifierContext identifier() {
39927 			return getRuleContext(IdentifierContext.class,0);
39928 		}
39929 		public XmlNamespacePrefixContext(ParserRuleContext parent, int invokingState) {
39930 			super(parent, invokingState);
39931 		}
39932 		@Override public int getRuleIndex() { return RULE_xmlNamespacePrefix; }
39933 		@Override
39934 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39935 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespacePrefix(this);
39936 			else return visitor.visitChildren(this);
39937 		}
39938 	}
39939 
39940 	public final XmlNamespacePrefixContext xmlNamespacePrefix() throws RecognitionException {
39941 		XmlNamespacePrefixContext _localctx = new XmlNamespacePrefixContext(_ctx, getState());
39942 		enterRule(_localctx, 762, RULE_xmlNamespacePrefix);
39943 		try {
39944 			enterOuterAlt(_localctx, 1);
39945 			{
39946 			setState(5450);
39947 			identifier();
39948 			}
39949 		}
39950 		catch (RecognitionException re) {
39951 			_localctx.exception = re;
39952 			_errHandler.reportError(this, re);
39953 			_errHandler.recover(this, re);
39954 		}
39955 		finally {
39956 			exitRule();
39957 		}
39958 		return _localctx;
39959 	}
39960 
39961 	public static class XmlDefaultNamespaceDeclarationItemContext extends ParserRuleContext {
39962 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
39963 		public XmlNamespaceUriContext xmlNamespaceUri() {
39964 			return getRuleContext(XmlNamespaceUriContext.class,0);
39965 		}
39966 		public XmlDefaultNamespaceDeclarationItemContext(ParserRuleContext parent, int invokingState) {
39967 			super(parent, invokingState);
39968 		}
39969 		@Override public int getRuleIndex() { return RULE_xmlDefaultNamespaceDeclarationItem; }
39970 		@Override
39971 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39972 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlDefaultNamespaceDeclarationItem(this);
39973 			else return visitor.visitChildren(this);
39974 		}
39975 	}
39976 
39977 	public final XmlDefaultNamespaceDeclarationItemContext xmlDefaultNamespaceDeclarationItem() throws RecognitionException {
39978 		XmlDefaultNamespaceDeclarationItemContext _localctx = new XmlDefaultNamespaceDeclarationItemContext(_ctx, getState());
39979 		enterRule(_localctx, 764, RULE_xmlDefaultNamespaceDeclarationItem);
39980 		try {
39981 			enterOuterAlt(_localctx, 1);
39982 			{
39983 			setState(5452);
39984 			match(DEFAULT);
39985 			setState(5453);
39986 			xmlNamespaceUri();
39987 			}
39988 		}
39989 		catch (RecognitionException re) {
39990 			_localctx.exception = re;
39991 			_errHandler.reportError(this, re);
39992 			_errHandler.recover(this, re);
39993 		}
39994 		finally {
39995 			exitRule();
39996 		}
39997 		return _localctx;
39998 	}
39999 
40000 	public static class GrantContext extends ParserRuleContext {
40001 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
40002 		public GrantClassPrivilegesClauseContext grantClassPrivilegesClause() {
40003 			return getRuleContext(GrantClassPrivilegesClauseContext.class,0);
40004 		}
40005 		public GrantClassTypePrivilegesClauseContext grantClassTypePrivilegesClause() {
40006 			return getRuleContext(GrantClassTypePrivilegesClauseContext.class,0);
40007 		}
40008 		public GrantContext(ParserRuleContext parent, int invokingState) {
40009 			super(parent, invokingState);
40010 		}
40011 		@Override public int getRuleIndex() { return RULE_grant; }
40012 		@Override
40013 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40014 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrant(this);
40015 			else return visitor.visitChildren(this);
40016 		}
40017 	}
40018 
40019 	public final GrantContext grant() throws RecognitionException {
40020 		GrantContext _localctx = new GrantContext(_ctx, getState());
40021 		enterRule(_localctx, 766, RULE_grant);
40022 		try {
40023 			enterOuterAlt(_localctx, 1);
40024 			{
40025 			setState(5455);
40026 			match(GRANT);
40027 			setState(5458);
40028 			_errHandler.sync(this);
40029 			switch ( getInterpreter().adaptivePredict(_input,626,_ctx) ) {
40030 			case 1:
40031 				{
40032 				setState(5456);
40033 				grantClassPrivilegesClause();
40034 				}
40035 				break;
40036 			case 2:
40037 				{
40038 				setState(5457);
40039 				grantClassTypePrivilegesClause();
40040 				}
40041 				break;
40042 			}
40043 			}
40044 		}
40045 		catch (RecognitionException re) {
40046 			_localctx.exception = re;
40047 			_errHandler.reportError(this, re);
40048 			_errHandler.recover(this, re);
40049 		}
40050 		finally {
40051 			exitRule();
40052 		}
40053 		return _localctx;
40054 	}
40055 
40056 	public static class GrantClassPrivilegesClauseContext extends ParserRuleContext {
40057 		public ClassPrivilegesContext classPrivileges() {
40058 			return getRuleContext(ClassPrivilegesContext.class,0);
40059 		}
40060 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
40061 		public List<PrincipalContext> principal() {
40062 			return getRuleContexts(PrincipalContext.class);
40063 		}
40064 		public PrincipalContext principal(int i) {
40065 			return getRuleContext(PrincipalContext.class,i);
40066 		}
40067 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
40068 		public OnClassClauseContext onClassClause() {
40069 			return getRuleContext(OnClassClauseContext.class,0);
40070 		}
40071 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40072 		public TerminalNode COMMA_(int i) {
40073 			return getToken(SQLServerStatementParser.COMMA_, i);
40074 		}
40075 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
40076 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
40077 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
40078 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
40079 		public GrantClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
40080 			super(parent, invokingState);
40081 		}
40082 		@Override public int getRuleIndex() { return RULE_grantClassPrivilegesClause; }
40083 		@Override
40084 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40085 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrantClassPrivilegesClause(this);
40086 			else return visitor.visitChildren(this);
40087 		}
40088 	}
40089 
40090 	public final GrantClassPrivilegesClauseContext grantClassPrivilegesClause() throws RecognitionException {
40091 		GrantClassPrivilegesClauseContext _localctx = new GrantClassPrivilegesClauseContext(_ctx, getState());
40092 		enterRule(_localctx, 768, RULE_grantClassPrivilegesClause);
40093 		int _la;
40094 		try {
40095 			enterOuterAlt(_localctx, 1);
40096 			{
40097 			setState(5460);
40098 			classPrivileges();
40099 			setState(5463);
40100 			_errHandler.sync(this);
40101 			_la = _input.LA(1);
40102 			if (_la==ON) {
40103 				{
40104 				setState(5461);
40105 				match(ON);
40106 				setState(5462);
40107 				onClassClause();
40108 				}
40109 			}
40110 
40111 			setState(5465);
40112 			match(TO);
40113 			setState(5466);
40114 			principal();
40115 			setState(5471);
40116 			_errHandler.sync(this);
40117 			_la = _input.LA(1);
40118 			while (_la==COMMA_) {
40119 				{
40120 				{
40121 				setState(5467);
40122 				match(COMMA_);
40123 				setState(5468);
40124 				principal();
40125 				}
40126 				}
40127 				setState(5473);
40128 				_errHandler.sync(this);
40129 				_la = _input.LA(1);
40130 			}
40131 			setState(5477);
40132 			_errHandler.sync(this);
40133 			_la = _input.LA(1);
40134 			if (_la==WITH) {
40135 				{
40136 				setState(5474);
40137 				match(WITH);
40138 				setState(5475);
40139 				match(GRANT);
40140 				setState(5476);
40141 				match(OPTION);
40142 				}
40143 			}
40144 
40145 			setState(5481);
40146 			_errHandler.sync(this);
40147 			_la = _input.LA(1);
40148 			if (_la==AS) {
40149 				{
40150 				setState(5479);
40151 				match(AS);
40152 				setState(5480);
40153 				principal();
40154 				}
40155 			}
40156 
40157 			}
40158 		}
40159 		catch (RecognitionException re) {
40160 			_localctx.exception = re;
40161 			_errHandler.reportError(this, re);
40162 			_errHandler.recover(this, re);
40163 		}
40164 		finally {
40165 			exitRule();
40166 		}
40167 		return _localctx;
40168 	}
40169 
40170 	public static class GrantClassTypePrivilegesClauseContext extends ParserRuleContext {
40171 		public ClassTypePrivilegesContext classTypePrivileges() {
40172 			return getRuleContext(ClassTypePrivilegesContext.class,0);
40173 		}
40174 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
40175 		public List<PrincipalContext> principal() {
40176 			return getRuleContexts(PrincipalContext.class);
40177 		}
40178 		public PrincipalContext principal(int i) {
40179 			return getRuleContext(PrincipalContext.class,i);
40180 		}
40181 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
40182 		public OnClassTypeClauseContext onClassTypeClause() {
40183 			return getRuleContext(OnClassTypeClauseContext.class,0);
40184 		}
40185 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40186 		public TerminalNode COMMA_(int i) {
40187 			return getToken(SQLServerStatementParser.COMMA_, i);
40188 		}
40189 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
40190 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
40191 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
40192 		public GrantClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
40193 			super(parent, invokingState);
40194 		}
40195 		@Override public int getRuleIndex() { return RULE_grantClassTypePrivilegesClause; }
40196 		@Override
40197 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40198 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrantClassTypePrivilegesClause(this);
40199 			else return visitor.visitChildren(this);
40200 		}
40201 	}
40202 
40203 	public final GrantClassTypePrivilegesClauseContext grantClassTypePrivilegesClause() throws RecognitionException {
40204 		GrantClassTypePrivilegesClauseContext _localctx = new GrantClassTypePrivilegesClauseContext(_ctx, getState());
40205 		enterRule(_localctx, 770, RULE_grantClassTypePrivilegesClause);
40206 		int _la;
40207 		try {
40208 			enterOuterAlt(_localctx, 1);
40209 			{
40210 			setState(5483);
40211 			classTypePrivileges();
40212 			setState(5486);
40213 			_errHandler.sync(this);
40214 			_la = _input.LA(1);
40215 			if (_la==ON) {
40216 				{
40217 				setState(5484);
40218 				match(ON);
40219 				setState(5485);
40220 				onClassTypeClause();
40221 				}
40222 			}
40223 
40224 			setState(5488);
40225 			match(TO);
40226 			setState(5489);
40227 			principal();
40228 			setState(5494);
40229 			_errHandler.sync(this);
40230 			_la = _input.LA(1);
40231 			while (_la==COMMA_) {
40232 				{
40233 				{
40234 				setState(5490);
40235 				match(COMMA_);
40236 				setState(5491);
40237 				principal();
40238 				}
40239 				}
40240 				setState(5496);
40241 				_errHandler.sync(this);
40242 				_la = _input.LA(1);
40243 			}
40244 			setState(5500);
40245 			_errHandler.sync(this);
40246 			_la = _input.LA(1);
40247 			if (_la==WITH) {
40248 				{
40249 				setState(5497);
40250 				match(WITH);
40251 				setState(5498);
40252 				match(GRANT);
40253 				setState(5499);
40254 				match(OPTION);
40255 				}
40256 			}
40257 
40258 			}
40259 		}
40260 		catch (RecognitionException re) {
40261 			_localctx.exception = re;
40262 			_errHandler.reportError(this, re);
40263 			_errHandler.recover(this, re);
40264 		}
40265 		finally {
40266 			exitRule();
40267 		}
40268 		return _localctx;
40269 	}
40270 
40271 	public static class ClassPrivilegesContext extends ParserRuleContext {
40272 		public List<PrivilegeTypeContext> privilegeType() {
40273 			return getRuleContexts(PrivilegeTypeContext.class);
40274 		}
40275 		public PrivilegeTypeContext privilegeType(int i) {
40276 			return getRuleContext(PrivilegeTypeContext.class,i);
40277 		}
40278 		public List<ColumnNamesContext> columnNames() {
40279 			return getRuleContexts(ColumnNamesContext.class);
40280 		}
40281 		public ColumnNamesContext columnNames(int i) {
40282 			return getRuleContext(ColumnNamesContext.class,i);
40283 		}
40284 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40285 		public TerminalNode COMMA_(int i) {
40286 			return getToken(SQLServerStatementParser.COMMA_, i);
40287 		}
40288 		public ClassPrivilegesContext(ParserRuleContext parent, int invokingState) {
40289 			super(parent, invokingState);
40290 		}
40291 		@Override public int getRuleIndex() { return RULE_classPrivileges; }
40292 		@Override
40293 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40294 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassPrivileges(this);
40295 			else return visitor.visitChildren(this);
40296 		}
40297 	}
40298 
40299 	public final ClassPrivilegesContext classPrivileges() throws RecognitionException {
40300 		ClassPrivilegesContext _localctx = new ClassPrivilegesContext(_ctx, getState());
40301 		enterRule(_localctx, 772, RULE_classPrivileges);
40302 		int _la;
40303 		try {
40304 			enterOuterAlt(_localctx, 1);
40305 			{
40306 			setState(5502);
40307 			privilegeType();
40308 			setState(5504);
40309 			_errHandler.sync(this);
40310 			_la = _input.LA(1);
40311 			if (_la==LP_) {
40312 				{
40313 				setState(5503);
40314 				columnNames();
40315 				}
40316 			}
40317 
40318 			setState(5513);
40319 			_errHandler.sync(this);
40320 			_la = _input.LA(1);
40321 			while (_la==COMMA_) {
40322 				{
40323 				{
40324 				setState(5506);
40325 				match(COMMA_);
40326 				setState(5507);
40327 				privilegeType();
40328 				setState(5509);
40329 				_errHandler.sync(this);
40330 				_la = _input.LA(1);
40331 				if (_la==LP_) {
40332 					{
40333 					setState(5508);
40334 					columnNames();
40335 					}
40336 				}
40337 
40338 				}
40339 				}
40340 				setState(5515);
40341 				_errHandler.sync(this);
40342 				_la = _input.LA(1);
40343 			}
40344 			}
40345 		}
40346 		catch (RecognitionException re) {
40347 			_localctx.exception = re;
40348 			_errHandler.reportError(this, re);
40349 			_errHandler.recover(this, re);
40350 		}
40351 		finally {
40352 			exitRule();
40353 		}
40354 		return _localctx;
40355 	}
40356 
40357 	public static class OnClassClauseContext extends ParserRuleContext {
40358 		public SecurableContext securable() {
40359 			return getRuleContext(SecurableContext.class,0);
40360 		}
40361 		public ClassItemContext classItem() {
40362 			return getRuleContext(ClassItemContext.class,0);
40363 		}
40364 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
40365 		public TerminalNode COLON_(int i) {
40366 			return getToken(SQLServerStatementParser.COLON_, i);
40367 		}
40368 		public OnClassClauseContext(ParserRuleContext parent, int invokingState) {
40369 			super(parent, invokingState);
40370 		}
40371 		@Override public int getRuleIndex() { return RULE_onClassClause; }
40372 		@Override
40373 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40374 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnClassClause(this);
40375 			else return visitor.visitChildren(this);
40376 		}
40377 	}
40378 
40379 	public final OnClassClauseContext onClassClause() throws RecognitionException {
40380 		OnClassClauseContext _localctx = new OnClassClauseContext(_ctx, getState());
40381 		enterRule(_localctx, 774, RULE_onClassClause);
40382 		try {
40383 			enterOuterAlt(_localctx, 1);
40384 			{
40385 			setState(5520);
40386 			_errHandler.sync(this);
40387 			switch ( getInterpreter().adaptivePredict(_input,637,_ctx) ) {
40388 			case 1:
40389 				{
40390 				setState(5516);
40391 				classItem();
40392 				setState(5517);
40393 				match(COLON_);
40394 				setState(5518);
40395 				match(COLON_);
40396 				}
40397 				break;
40398 			}
40399 			setState(5522);
40400 			securable();
40401 			}
40402 		}
40403 		catch (RecognitionException re) {
40404 			_localctx.exception = re;
40405 			_errHandler.reportError(this, re);
40406 			_errHandler.recover(this, re);
40407 		}
40408 		finally {
40409 			exitRule();
40410 		}
40411 		return _localctx;
40412 	}
40413 
40414 	public static class ClassTypePrivilegesContext extends ParserRuleContext {
40415 		public List<PrivilegeTypeContext> privilegeType() {
40416 			return getRuleContexts(PrivilegeTypeContext.class);
40417 		}
40418 		public PrivilegeTypeContext privilegeType(int i) {
40419 			return getRuleContext(PrivilegeTypeContext.class,i);
40420 		}
40421 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40422 		public TerminalNode COMMA_(int i) {
40423 			return getToken(SQLServerStatementParser.COMMA_, i);
40424 		}
40425 		public ClassTypePrivilegesContext(ParserRuleContext parent, int invokingState) {
40426 			super(parent, invokingState);
40427 		}
40428 		@Override public int getRuleIndex() { return RULE_classTypePrivileges; }
40429 		@Override
40430 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40431 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassTypePrivileges(this);
40432 			else return visitor.visitChildren(this);
40433 		}
40434 	}
40435 
40436 	public final ClassTypePrivilegesContext classTypePrivileges() throws RecognitionException {
40437 		ClassTypePrivilegesContext _localctx = new ClassTypePrivilegesContext(_ctx, getState());
40438 		enterRule(_localctx, 776, RULE_classTypePrivileges);
40439 		int _la;
40440 		try {
40441 			enterOuterAlt(_localctx, 1);
40442 			{
40443 			setState(5524);
40444 			privilegeType();
40445 			setState(5529);
40446 			_errHandler.sync(this);
40447 			_la = _input.LA(1);
40448 			while (_la==COMMA_) {
40449 				{
40450 				{
40451 				setState(5525);
40452 				match(COMMA_);
40453 				setState(5526);
40454 				privilegeType();
40455 				}
40456 				}
40457 				setState(5531);
40458 				_errHandler.sync(this);
40459 				_la = _input.LA(1);
40460 			}
40461 			}
40462 		}
40463 		catch (RecognitionException re) {
40464 			_localctx.exception = re;
40465 			_errHandler.reportError(this, re);
40466 			_errHandler.recover(this, re);
40467 		}
40468 		finally {
40469 			exitRule();
40470 		}
40471 		return _localctx;
40472 	}
40473 
40474 	public static class OnClassTypeClauseContext extends ParserRuleContext {
40475 		public SecurableContext securable() {
40476 			return getRuleContext(SecurableContext.class,0);
40477 		}
40478 		public ClassTypeContext classType() {
40479 			return getRuleContext(ClassTypeContext.class,0);
40480 		}
40481 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
40482 		public TerminalNode COLON_(int i) {
40483 			return getToken(SQLServerStatementParser.COLON_, i);
40484 		}
40485 		public OnClassTypeClauseContext(ParserRuleContext parent, int invokingState) {
40486 			super(parent, invokingState);
40487 		}
40488 		@Override public int getRuleIndex() { return RULE_onClassTypeClause; }
40489 		@Override
40490 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40491 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnClassTypeClause(this);
40492 			else return visitor.visitChildren(this);
40493 		}
40494 	}
40495 
40496 	public final OnClassTypeClauseContext onClassTypeClause() throws RecognitionException {
40497 		OnClassTypeClauseContext _localctx = new OnClassTypeClauseContext(_ctx, getState());
40498 		enterRule(_localctx, 778, RULE_onClassTypeClause);
40499 		try {
40500 			enterOuterAlt(_localctx, 1);
40501 			{
40502 			setState(5536);
40503 			_errHandler.sync(this);
40504 			switch ( getInterpreter().adaptivePredict(_input,639,_ctx) ) {
40505 			case 1:
40506 				{
40507 				setState(5532);
40508 				classType();
40509 				setState(5533);
40510 				match(COLON_);
40511 				setState(5534);
40512 				match(COLON_);
40513 				}
40514 				break;
40515 			}
40516 			setState(5538);
40517 			securable();
40518 			}
40519 		}
40520 		catch (RecognitionException re) {
40521 			_localctx.exception = re;
40522 			_errHandler.reportError(this, re);
40523 			_errHandler.recover(this, re);
40524 		}
40525 		finally {
40526 			exitRule();
40527 		}
40528 		return _localctx;
40529 	}
40530 
40531 	public static class SecurableContext extends ParserRuleContext {
40532 		public NameContext name() {
40533 			return getRuleContext(NameContext.class,0);
40534 		}
40535 		public OwnerContext owner() {
40536 			return getRuleContext(OwnerContext.class,0);
40537 		}
40538 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
40539 		public SecurableContext(ParserRuleContext parent, int invokingState) {
40540 			super(parent, invokingState);
40541 		}
40542 		@Override public int getRuleIndex() { return RULE_securable; }
40543 		@Override
40544 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40545 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSecurable(this);
40546 			else return visitor.visitChildren(this);
40547 		}
40548 	}
40549 
40550 	public final SecurableContext securable() throws RecognitionException {
40551 		SecurableContext _localctx = new SecurableContext(_ctx, getState());
40552 		enterRule(_localctx, 780, RULE_securable);
40553 		try {
40554 			enterOuterAlt(_localctx, 1);
40555 			{
40556 			setState(5543);
40557 			_errHandler.sync(this);
40558 			switch ( getInterpreter().adaptivePredict(_input,640,_ctx) ) {
40559 			case 1:
40560 				{
40561 				setState(5540);
40562 				owner();
40563 				setState(5541);
40564 				match(DOT_);
40565 				}
40566 				break;
40567 			}
40568 			setState(5545);
40569 			name();
40570 			}
40571 		}
40572 		catch (RecognitionException re) {
40573 			_localctx.exception = re;
40574 			_errHandler.reportError(this, re);
40575 			_errHandler.recover(this, re);
40576 		}
40577 		finally {
40578 			exitRule();
40579 		}
40580 		return _localctx;
40581 	}
40582 
40583 	public static class PrincipalContext extends ParserRuleContext {
40584 		public UserNameContext userName() {
40585 			return getRuleContext(UserNameContext.class,0);
40586 		}
40587 		public PrincipalContext(ParserRuleContext parent, int invokingState) {
40588 			super(parent, invokingState);
40589 		}
40590 		@Override public int getRuleIndex() { return RULE_principal; }
40591 		@Override
40592 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40593 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrincipal(this);
40594 			else return visitor.visitChildren(this);
40595 		}
40596 	}
40597 
40598 	public final PrincipalContext principal() throws RecognitionException {
40599 		PrincipalContext _localctx = new PrincipalContext(_ctx, getState());
40600 		enterRule(_localctx, 782, RULE_principal);
40601 		try {
40602 			enterOuterAlt(_localctx, 1);
40603 			{
40604 			setState(5547);
40605 			userName();
40606 			}
40607 		}
40608 		catch (RecognitionException re) {
40609 			_localctx.exception = re;
40610 			_errHandler.reportError(this, re);
40611 			_errHandler.recover(this, re);
40612 		}
40613 		finally {
40614 			exitRule();
40615 		}
40616 		return _localctx;
40617 	}
40618 
40619 	public static class RevokeContext extends ParserRuleContext {
40620 		public TerminalNode REVOKE() { return getToken(SQLServerStatementParser.REVOKE, 0); }
40621 		public RevokeClassPrivilegesClauseContext revokeClassPrivilegesClause() {
40622 			return getRuleContext(RevokeClassPrivilegesClauseContext.class,0);
40623 		}
40624 		public RevokeClassTypePrivilegesClauseContext revokeClassTypePrivilegesClause() {
40625 			return getRuleContext(RevokeClassTypePrivilegesClauseContext.class,0);
40626 		}
40627 		public OptionForClauseContext optionForClause() {
40628 			return getRuleContext(OptionForClauseContext.class,0);
40629 		}
40630 		public RevokeContext(ParserRuleContext parent, int invokingState) {
40631 			super(parent, invokingState);
40632 		}
40633 		@Override public int getRuleIndex() { return RULE_revoke; }
40634 		@Override
40635 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40636 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevoke(this);
40637 			else return visitor.visitChildren(this);
40638 		}
40639 	}
40640 
40641 	public final RevokeContext revoke() throws RecognitionException {
40642 		RevokeContext _localctx = new RevokeContext(_ctx, getState());
40643 		enterRule(_localctx, 784, RULE_revoke);
40644 		int _la;
40645 		try {
40646 			enterOuterAlt(_localctx, 1);
40647 			{
40648 			setState(5549);
40649 			match(REVOKE);
40650 			setState(5555);
40651 			_errHandler.sync(this);
40652 			switch ( getInterpreter().adaptivePredict(_input,642,_ctx) ) {
40653 			case 1:
40654 				{
40655 				setState(5551);
40656 				_errHandler.sync(this);
40657 				_la = _input.LA(1);
40658 				if (_la==GRANT) {
40659 					{
40660 					setState(5550);
40661 					optionForClause();
40662 					}
40663 				}
40664 
40665 				setState(5553);
40666 				revokeClassPrivilegesClause();
40667 				}
40668 				break;
40669 			case 2:
40670 				{
40671 				setState(5554);
40672 				revokeClassTypePrivilegesClause();
40673 				}
40674 				break;
40675 			}
40676 			}
40677 		}
40678 		catch (RecognitionException re) {
40679 			_localctx.exception = re;
40680 			_errHandler.reportError(this, re);
40681 			_errHandler.recover(this, re);
40682 		}
40683 		finally {
40684 			exitRule();
40685 		}
40686 		return _localctx;
40687 	}
40688 
40689 	public static class RevokeClassPrivilegesClauseContext extends ParserRuleContext {
40690 		public ClassPrivilegesContext classPrivileges() {
40691 			return getRuleContext(ClassPrivilegesContext.class,0);
40692 		}
40693 		public List<PrincipalContext> principal() {
40694 			return getRuleContexts(PrincipalContext.class);
40695 		}
40696 		public PrincipalContext principal(int i) {
40697 			return getRuleContext(PrincipalContext.class,i);
40698 		}
40699 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
40700 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
40701 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
40702 		public OnClassClauseContext onClassClause() {
40703 			return getRuleContext(OnClassClauseContext.class,0);
40704 		}
40705 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40706 		public TerminalNode COMMA_(int i) {
40707 			return getToken(SQLServerStatementParser.COMMA_, i);
40708 		}
40709 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
40710 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
40711 		public RevokeClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
40712 			super(parent, invokingState);
40713 		}
40714 		@Override public int getRuleIndex() { return RULE_revokeClassPrivilegesClause; }
40715 		@Override
40716 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40717 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevokeClassPrivilegesClause(this);
40718 			else return visitor.visitChildren(this);
40719 		}
40720 	}
40721 
40722 	public final RevokeClassPrivilegesClauseContext revokeClassPrivilegesClause() throws RecognitionException {
40723 		RevokeClassPrivilegesClauseContext _localctx = new RevokeClassPrivilegesClauseContext(_ctx, getState());
40724 		enterRule(_localctx, 786, RULE_revokeClassPrivilegesClause);
40725 		int _la;
40726 		try {
40727 			enterOuterAlt(_localctx, 1);
40728 			{
40729 			setState(5557);
40730 			classPrivileges();
40731 			setState(5560);
40732 			_errHandler.sync(this);
40733 			_la = _input.LA(1);
40734 			if (_la==ON) {
40735 				{
40736 				setState(5558);
40737 				match(ON);
40738 				setState(5559);
40739 				onClassClause();
40740 				}
40741 			}
40742 
40743 			setState(5562);
40744 			_la = _input.LA(1);
40745 			if ( !(_la==FROM || _la==TO) ) {
40746 			_errHandler.recoverInline(this);
40747 			}
40748 			else {
40749 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40750 				_errHandler.reportMatch(this);
40751 				consume();
40752 			}
40753 			setState(5563);
40754 			principal();
40755 			setState(5568);
40756 			_errHandler.sync(this);
40757 			_la = _input.LA(1);
40758 			while (_la==COMMA_) {
40759 				{
40760 				{
40761 				setState(5564);
40762 				match(COMMA_);
40763 				setState(5565);
40764 				principal();
40765 				}
40766 				}
40767 				setState(5570);
40768 				_errHandler.sync(this);
40769 				_la = _input.LA(1);
40770 			}
40771 			setState(5572);
40772 			_errHandler.sync(this);
40773 			_la = _input.LA(1);
40774 			if (_la==CASCADE) {
40775 				{
40776 				setState(5571);
40777 				match(CASCADE);
40778 				}
40779 			}
40780 
40781 			setState(5576);
40782 			_errHandler.sync(this);
40783 			_la = _input.LA(1);
40784 			if (_la==AS) {
40785 				{
40786 				setState(5574);
40787 				match(AS);
40788 				setState(5575);
40789 				principal();
40790 				}
40791 			}
40792 
40793 			}
40794 		}
40795 		catch (RecognitionException re) {
40796 			_localctx.exception = re;
40797 			_errHandler.reportError(this, re);
40798 			_errHandler.recover(this, re);
40799 		}
40800 		finally {
40801 			exitRule();
40802 		}
40803 		return _localctx;
40804 	}
40805 
40806 	public static class RevokeClassTypePrivilegesClauseContext extends ParserRuleContext {
40807 		public ClassTypePrivilegesContext classTypePrivileges() {
40808 			return getRuleContext(ClassTypePrivilegesContext.class,0);
40809 		}
40810 		public List<PrincipalContext> principal() {
40811 			return getRuleContexts(PrincipalContext.class);
40812 		}
40813 		public PrincipalContext principal(int i) {
40814 			return getRuleContext(PrincipalContext.class,i);
40815 		}
40816 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
40817 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
40818 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
40819 		public OnClassTypeClauseContext onClassTypeClause() {
40820 			return getRuleContext(OnClassTypeClauseContext.class,0);
40821 		}
40822 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40823 		public TerminalNode COMMA_(int i) {
40824 			return getToken(SQLServerStatementParser.COMMA_, i);
40825 		}
40826 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
40827 		public RevokeClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
40828 			super(parent, invokingState);
40829 		}
40830 		@Override public int getRuleIndex() { return RULE_revokeClassTypePrivilegesClause; }
40831 		@Override
40832 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40833 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevokeClassTypePrivilegesClause(this);
40834 			else return visitor.visitChildren(this);
40835 		}
40836 	}
40837 
40838 	public final RevokeClassTypePrivilegesClauseContext revokeClassTypePrivilegesClause() throws RecognitionException {
40839 		RevokeClassTypePrivilegesClauseContext _localctx = new RevokeClassTypePrivilegesClauseContext(_ctx, getState());
40840 		enterRule(_localctx, 788, RULE_revokeClassTypePrivilegesClause);
40841 		int _la;
40842 		try {
40843 			enterOuterAlt(_localctx, 1);
40844 			{
40845 			setState(5578);
40846 			classTypePrivileges();
40847 			setState(5581);
40848 			_errHandler.sync(this);
40849 			_la = _input.LA(1);
40850 			if (_la==ON) {
40851 				{
40852 				setState(5579);
40853 				match(ON);
40854 				setState(5580);
40855 				onClassTypeClause();
40856 				}
40857 			}
40858 
40859 			setState(5583);
40860 			_la = _input.LA(1);
40861 			if ( !(_la==FROM || _la==TO) ) {
40862 			_errHandler.recoverInline(this);
40863 			}
40864 			else {
40865 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40866 				_errHandler.reportMatch(this);
40867 				consume();
40868 			}
40869 			setState(5584);
40870 			principal();
40871 			setState(5589);
40872 			_errHandler.sync(this);
40873 			_la = _input.LA(1);
40874 			while (_la==COMMA_) {
40875 				{
40876 				{
40877 				setState(5585);
40878 				match(COMMA_);
40879 				setState(5586);
40880 				principal();
40881 				}
40882 				}
40883 				setState(5591);
40884 				_errHandler.sync(this);
40885 				_la = _input.LA(1);
40886 			}
40887 			setState(5593);
40888 			_errHandler.sync(this);
40889 			_la = _input.LA(1);
40890 			if (_la==CASCADE) {
40891 				{
40892 				setState(5592);
40893 				match(CASCADE);
40894 				}
40895 			}
40896 
40897 			}
40898 		}
40899 		catch (RecognitionException re) {
40900 			_localctx.exception = re;
40901 			_errHandler.reportError(this, re);
40902 			_errHandler.recover(this, re);
40903 		}
40904 		finally {
40905 			exitRule();
40906 		}
40907 		return _localctx;
40908 	}
40909 
40910 	public static class DenyContext extends ParserRuleContext {
40911 		public TerminalNode DENY() { return getToken(SQLServerStatementParser.DENY, 0); }
40912 		public DenyClassPrivilegesClauseContext denyClassPrivilegesClause() {
40913 			return getRuleContext(DenyClassPrivilegesClauseContext.class,0);
40914 		}
40915 		public DenyClassTypePrivilegesClauseContext denyClassTypePrivilegesClause() {
40916 			return getRuleContext(DenyClassTypePrivilegesClauseContext.class,0);
40917 		}
40918 		public DenyContext(ParserRuleContext parent, int invokingState) {
40919 			super(parent, invokingState);
40920 		}
40921 		@Override public int getRuleIndex() { return RULE_deny; }
40922 		@Override
40923 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40924 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDeny(this);
40925 			else return visitor.visitChildren(this);
40926 		}
40927 	}
40928 
40929 	public final DenyContext deny() throws RecognitionException {
40930 		DenyContext _localctx = new DenyContext(_ctx, getState());
40931 		enterRule(_localctx, 790, RULE_deny);
40932 		try {
40933 			enterOuterAlt(_localctx, 1);
40934 			{
40935 			setState(5595);
40936 			match(DENY);
40937 			setState(5598);
40938 			_errHandler.sync(this);
40939 			switch ( getInterpreter().adaptivePredict(_input,650,_ctx) ) {
40940 			case 1:
40941 				{
40942 				setState(5596);
40943 				denyClassPrivilegesClause();
40944 				}
40945 				break;
40946 			case 2:
40947 				{
40948 				setState(5597);
40949 				denyClassTypePrivilegesClause();
40950 				}
40951 				break;
40952 			}
40953 			}
40954 		}
40955 		catch (RecognitionException re) {
40956 			_localctx.exception = re;
40957 			_errHandler.reportError(this, re);
40958 			_errHandler.recover(this, re);
40959 		}
40960 		finally {
40961 			exitRule();
40962 		}
40963 		return _localctx;
40964 	}
40965 
40966 	public static class DenyClassPrivilegesClauseContext extends ParserRuleContext {
40967 		public ClassPrivilegesContext classPrivileges() {
40968 			return getRuleContext(ClassPrivilegesContext.class,0);
40969 		}
40970 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
40971 		public List<PrincipalContext> principal() {
40972 			return getRuleContexts(PrincipalContext.class);
40973 		}
40974 		public PrincipalContext principal(int i) {
40975 			return getRuleContext(PrincipalContext.class,i);
40976 		}
40977 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
40978 		public OnClassClauseContext onClassClause() {
40979 			return getRuleContext(OnClassClauseContext.class,0);
40980 		}
40981 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40982 		public TerminalNode COMMA_(int i) {
40983 			return getToken(SQLServerStatementParser.COMMA_, i);
40984 		}
40985 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
40986 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
40987 		public DenyClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
40988 			super(parent, invokingState);
40989 		}
40990 		@Override public int getRuleIndex() { return RULE_denyClassPrivilegesClause; }
40991 		@Override
40992 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40993 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDenyClassPrivilegesClause(this);
40994 			else return visitor.visitChildren(this);
40995 		}
40996 	}
40997 
40998 	public final DenyClassPrivilegesClauseContext denyClassPrivilegesClause() throws RecognitionException {
40999 		DenyClassPrivilegesClauseContext _localctx = new DenyClassPrivilegesClauseContext(_ctx, getState());
41000 		enterRule(_localctx, 792, RULE_denyClassPrivilegesClause);
41001 		int _la;
41002 		try {
41003 			enterOuterAlt(_localctx, 1);
41004 			{
41005 			setState(5600);
41006 			classPrivileges();
41007 			setState(5603);
41008 			_errHandler.sync(this);
41009 			_la = _input.LA(1);
41010 			if (_la==ON) {
41011 				{
41012 				setState(5601);
41013 				match(ON);
41014 				setState(5602);
41015 				onClassClause();
41016 				}
41017 			}
41018 
41019 			setState(5605);
41020 			match(TO);
41021 			setState(5606);
41022 			principal();
41023 			setState(5611);
41024 			_errHandler.sync(this);
41025 			_la = _input.LA(1);
41026 			while (_la==COMMA_) {
41027 				{
41028 				{
41029 				setState(5607);
41030 				match(COMMA_);
41031 				setState(5608);
41032 				principal();
41033 				}
41034 				}
41035 				setState(5613);
41036 				_errHandler.sync(this);
41037 				_la = _input.LA(1);
41038 			}
41039 			setState(5615);
41040 			_errHandler.sync(this);
41041 			_la = _input.LA(1);
41042 			if (_la==CASCADE) {
41043 				{
41044 				setState(5614);
41045 				match(CASCADE);
41046 				}
41047 			}
41048 
41049 			setState(5619);
41050 			_errHandler.sync(this);
41051 			_la = _input.LA(1);
41052 			if (_la==AS) {
41053 				{
41054 				setState(5617);
41055 				match(AS);
41056 				setState(5618);
41057 				principal();
41058 				}
41059 			}
41060 
41061 			}
41062 		}
41063 		catch (RecognitionException re) {
41064 			_localctx.exception = re;
41065 			_errHandler.reportError(this, re);
41066 			_errHandler.recover(this, re);
41067 		}
41068 		finally {
41069 			exitRule();
41070 		}
41071 		return _localctx;
41072 	}
41073 
41074 	public static class DenyClassTypePrivilegesClauseContext extends ParserRuleContext {
41075 		public ClassTypePrivilegesContext classTypePrivileges() {
41076 			return getRuleContext(ClassTypePrivilegesContext.class,0);
41077 		}
41078 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
41079 		public List<PrincipalContext> principal() {
41080 			return getRuleContexts(PrincipalContext.class);
41081 		}
41082 		public PrincipalContext principal(int i) {
41083 			return getRuleContext(PrincipalContext.class,i);
41084 		}
41085 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
41086 		public OnClassTypeClauseContext onClassTypeClause() {
41087 			return getRuleContext(OnClassTypeClauseContext.class,0);
41088 		}
41089 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41090 		public TerminalNode COMMA_(int i) {
41091 			return getToken(SQLServerStatementParser.COMMA_, i);
41092 		}
41093 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
41094 		public DenyClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
41095 			super(parent, invokingState);
41096 		}
41097 		@Override public int getRuleIndex() { return RULE_denyClassTypePrivilegesClause; }
41098 		@Override
41099 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41100 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDenyClassTypePrivilegesClause(this);
41101 			else return visitor.visitChildren(this);
41102 		}
41103 	}
41104 
41105 	public final DenyClassTypePrivilegesClauseContext denyClassTypePrivilegesClause() throws RecognitionException {
41106 		DenyClassTypePrivilegesClauseContext _localctx = new DenyClassTypePrivilegesClauseContext(_ctx, getState());
41107 		enterRule(_localctx, 794, RULE_denyClassTypePrivilegesClause);
41108 		int _la;
41109 		try {
41110 			enterOuterAlt(_localctx, 1);
41111 			{
41112 			setState(5621);
41113 			classTypePrivileges();
41114 			setState(5624);
41115 			_errHandler.sync(this);
41116 			_la = _input.LA(1);
41117 			if (_la==ON) {
41118 				{
41119 				setState(5622);
41120 				match(ON);
41121 				setState(5623);
41122 				onClassTypeClause();
41123 				}
41124 			}
41125 
41126 			setState(5626);
41127 			match(TO);
41128 			setState(5627);
41129 			principal();
41130 			setState(5632);
41131 			_errHandler.sync(this);
41132 			_la = _input.LA(1);
41133 			while (_la==COMMA_) {
41134 				{
41135 				{
41136 				setState(5628);
41137 				match(COMMA_);
41138 				setState(5629);
41139 				principal();
41140 				}
41141 				}
41142 				setState(5634);
41143 				_errHandler.sync(this);
41144 				_la = _input.LA(1);
41145 			}
41146 			setState(5636);
41147 			_errHandler.sync(this);
41148 			_la = _input.LA(1);
41149 			if (_la==CASCADE) {
41150 				{
41151 				setState(5635);
41152 				match(CASCADE);
41153 				}
41154 			}
41155 
41156 			}
41157 		}
41158 		catch (RecognitionException re) {
41159 			_localctx.exception = re;
41160 			_errHandler.reportError(this, re);
41161 			_errHandler.recover(this, re);
41162 		}
41163 		finally {
41164 			exitRule();
41165 		}
41166 		return _localctx;
41167 	}
41168 
41169 	public static class OptionForClauseContext extends ParserRuleContext {
41170 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
41171 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
41172 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
41173 		public OptionForClauseContext(ParserRuleContext parent, int invokingState) {
41174 			super(parent, invokingState);
41175 		}
41176 		@Override public int getRuleIndex() { return RULE_optionForClause; }
41177 		@Override
41178 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41179 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionForClause(this);
41180 			else return visitor.visitChildren(this);
41181 		}
41182 	}
41183 
41184 	public final OptionForClauseContext optionForClause() throws RecognitionException {
41185 		OptionForClauseContext _localctx = new OptionForClauseContext(_ctx, getState());
41186 		enterRule(_localctx, 796, RULE_optionForClause);
41187 		try {
41188 			enterOuterAlt(_localctx, 1);
41189 			{
41190 			setState(5638);
41191 			match(GRANT);
41192 			setState(5639);
41193 			match(OPTION);
41194 			setState(5640);
41195 			match(FOR);
41196 			}
41197 		}
41198 		catch (RecognitionException re) {
41199 			_localctx.exception = re;
41200 			_errHandler.reportError(this, re);
41201 			_errHandler.recover(this, re);
41202 		}
41203 		finally {
41204 			exitRule();
41205 		}
41206 		return _localctx;
41207 	}
41208 
41209 	public static class PrivilegeTypeContext extends ParserRuleContext {
41210 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
41211 		public TerminalNode PRIVILEGES() { return getToken(SQLServerStatementParser.PRIVILEGES, 0); }
41212 		public AssemblyPermissionContext assemblyPermission() {
41213 			return getRuleContext(AssemblyPermissionContext.class,0);
41214 		}
41215 		public AsymmetricKeyPermissionContext asymmetricKeyPermission() {
41216 			return getRuleContext(AsymmetricKeyPermissionContext.class,0);
41217 		}
41218 		public AvailabilityGroupPermissionContext availabilityGroupPermission() {
41219 			return getRuleContext(AvailabilityGroupPermissionContext.class,0);
41220 		}
41221 		public CertificatePermissionContext certificatePermission() {
41222 			return getRuleContext(CertificatePermissionContext.class,0);
41223 		}
41224 		public ObjectPermissionContext objectPermission() {
41225 			return getRuleContext(ObjectPermissionContext.class,0);
41226 		}
41227 		public SystemObjectPermissionContext systemObjectPermission() {
41228 			return getRuleContext(SystemObjectPermissionContext.class,0);
41229 		}
41230 		public DatabasePermissionContext databasePermission() {
41231 			return getRuleContext(DatabasePermissionContext.class,0);
41232 		}
41233 		public DatabasePrincipalPermissionContext databasePrincipalPermission() {
41234 			return getRuleContext(DatabasePrincipalPermissionContext.class,0);
41235 		}
41236 		public DatabaseScopedCredentialPermissionContext databaseScopedCredentialPermission() {
41237 			return getRuleContext(DatabaseScopedCredentialPermissionContext.class,0);
41238 		}
41239 		public EndpointPermissionContext endpointPermission() {
41240 			return getRuleContext(EndpointPermissionContext.class,0);
41241 		}
41242 		public FullTextPermissionContext fullTextPermission() {
41243 			return getRuleContext(FullTextPermissionContext.class,0);
41244 		}
41245 		public SchemaPermissionContext schemaPermission() {
41246 			return getRuleContext(SchemaPermissionContext.class,0);
41247 		}
41248 		public SearchPropertyListPermissionContext searchPropertyListPermission() {
41249 			return getRuleContext(SearchPropertyListPermissionContext.class,0);
41250 		}
41251 		public ServerPermissionContext serverPermission() {
41252 			return getRuleContext(ServerPermissionContext.class,0);
41253 		}
41254 		public ServerPrincipalPermissionContext serverPrincipalPermission() {
41255 			return getRuleContext(ServerPrincipalPermissionContext.class,0);
41256 		}
41257 		public ServiceBrokerPermissionContext serviceBrokerPermission() {
41258 			return getRuleContext(ServiceBrokerPermissionContext.class,0);
41259 		}
41260 		public SymmetricKeyPermissionContext symmetricKeyPermission() {
41261 			return getRuleContext(SymmetricKeyPermissionContext.class,0);
41262 		}
41263 		public TypePermissionContext typePermission() {
41264 			return getRuleContext(TypePermissionContext.class,0);
41265 		}
41266 		public XmlSchemaCollectionPermissionContext xmlSchemaCollectionPermission() {
41267 			return getRuleContext(XmlSchemaCollectionPermissionContext.class,0);
41268 		}
41269 		public PrivilegeTypeContext(ParserRuleContext parent, int invokingState) {
41270 			super(parent, invokingState);
41271 		}
41272 		@Override public int getRuleIndex() { return RULE_privilegeType; }
41273 		@Override
41274 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41275 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrivilegeType(this);
41276 			else return visitor.visitChildren(this);
41277 		}
41278 	}
41279 
41280 	public final PrivilegeTypeContext privilegeType() throws RecognitionException {
41281 		PrivilegeTypeContext _localctx = new PrivilegeTypeContext(_ctx, getState());
41282 		enterRule(_localctx, 798, RULE_privilegeType);
41283 		int _la;
41284 		try {
41285 			setState(5665);
41286 			_errHandler.sync(this);
41287 			switch ( getInterpreter().adaptivePredict(_input,659,_ctx) ) {
41288 			case 1:
41289 				enterOuterAlt(_localctx, 1);
41290 				{
41291 				setState(5642);
41292 				match(ALL);
41293 				setState(5644);
41294 				_errHandler.sync(this);
41295 				_la = _input.LA(1);
41296 				if (_la==PRIVILEGES) {
41297 					{
41298 					setState(5643);
41299 					match(PRIVILEGES);
41300 					}
41301 				}
41302 
41303 				}
41304 				break;
41305 			case 2:
41306 				enterOuterAlt(_localctx, 2);
41307 				{
41308 				setState(5646);
41309 				assemblyPermission();
41310 				}
41311 				break;
41312 			case 3:
41313 				enterOuterAlt(_localctx, 3);
41314 				{
41315 				setState(5647);
41316 				asymmetricKeyPermission();
41317 				}
41318 				break;
41319 			case 4:
41320 				enterOuterAlt(_localctx, 4);
41321 				{
41322 				setState(5648);
41323 				availabilityGroupPermission();
41324 				}
41325 				break;
41326 			case 5:
41327 				enterOuterAlt(_localctx, 5);
41328 				{
41329 				setState(5649);
41330 				certificatePermission();
41331 				}
41332 				break;
41333 			case 6:
41334 				enterOuterAlt(_localctx, 6);
41335 				{
41336 				setState(5650);
41337 				objectPermission();
41338 				}
41339 				break;
41340 			case 7:
41341 				enterOuterAlt(_localctx, 7);
41342 				{
41343 				setState(5651);
41344 				systemObjectPermission();
41345 				}
41346 				break;
41347 			case 8:
41348 				enterOuterAlt(_localctx, 8);
41349 				{
41350 				setState(5652);
41351 				databasePermission();
41352 				}
41353 				break;
41354 			case 9:
41355 				enterOuterAlt(_localctx, 9);
41356 				{
41357 				setState(5653);
41358 				databasePrincipalPermission();
41359 				}
41360 				break;
41361 			case 10:
41362 				enterOuterAlt(_localctx, 10);
41363 				{
41364 				setState(5654);
41365 				databaseScopedCredentialPermission();
41366 				}
41367 				break;
41368 			case 11:
41369 				enterOuterAlt(_localctx, 11);
41370 				{
41371 				setState(5655);
41372 				endpointPermission();
41373 				}
41374 				break;
41375 			case 12:
41376 				enterOuterAlt(_localctx, 12);
41377 				{
41378 				setState(5656);
41379 				fullTextPermission();
41380 				}
41381 				break;
41382 			case 13:
41383 				enterOuterAlt(_localctx, 13);
41384 				{
41385 				setState(5657);
41386 				schemaPermission();
41387 				}
41388 				break;
41389 			case 14:
41390 				enterOuterAlt(_localctx, 14);
41391 				{
41392 				setState(5658);
41393 				searchPropertyListPermission();
41394 				}
41395 				break;
41396 			case 15:
41397 				enterOuterAlt(_localctx, 15);
41398 				{
41399 				setState(5659);
41400 				serverPermission();
41401 				}
41402 				break;
41403 			case 16:
41404 				enterOuterAlt(_localctx, 16);
41405 				{
41406 				setState(5660);
41407 				serverPrincipalPermission();
41408 				}
41409 				break;
41410 			case 17:
41411 				enterOuterAlt(_localctx, 17);
41412 				{
41413 				setState(5661);
41414 				serviceBrokerPermission();
41415 				}
41416 				break;
41417 			case 18:
41418 				enterOuterAlt(_localctx, 18);
41419 				{
41420 				setState(5662);
41421 				symmetricKeyPermission();
41422 				}
41423 				break;
41424 			case 19:
41425 				enterOuterAlt(_localctx, 19);
41426 				{
41427 				setState(5663);
41428 				typePermission();
41429 				}
41430 				break;
41431 			case 20:
41432 				enterOuterAlt(_localctx, 20);
41433 				{
41434 				setState(5664);
41435 				xmlSchemaCollectionPermission();
41436 				}
41437 				break;
41438 			}
41439 		}
41440 		catch (RecognitionException re) {
41441 			_localctx.exception = re;
41442 			_errHandler.reportError(this, re);
41443 			_errHandler.recover(this, re);
41444 		}
41445 		finally {
41446 			exitRule();
41447 		}
41448 		return _localctx;
41449 	}
41450 
41451 	public static class ObjectPermissionContext extends ParserRuleContext {
41452 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
41453 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
41454 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
41455 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
41456 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
41457 		public TerminalNode RECEIVE() { return getToken(SQLServerStatementParser.RECEIVE, 0); }
41458 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
41459 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
41460 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
41461 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
41462 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
41463 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
41464 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
41465 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
41466 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
41467 		public ObjectPermissionContext(ParserRuleContext parent, int invokingState) {
41468 			super(parent, invokingState);
41469 		}
41470 		@Override public int getRuleIndex() { return RULE_objectPermission; }
41471 		@Override
41472 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41473 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitObjectPermission(this);
41474 			else return visitor.visitChildren(this);
41475 		}
41476 	}
41477 
41478 	public final ObjectPermissionContext objectPermission() throws RecognitionException {
41479 		ObjectPermissionContext _localctx = new ObjectPermissionContext(_ctx, getState());
41480 		enterRule(_localctx, 800, RULE_objectPermission);
41481 		try {
41482 			setState(5683);
41483 			_errHandler.sync(this);
41484 			switch ( getInterpreter().adaptivePredict(_input,660,_ctx) ) {
41485 			case 1:
41486 				enterOuterAlt(_localctx, 1);
41487 				{
41488 				setState(5667);
41489 				match(ALTER);
41490 				}
41491 				break;
41492 			case 2:
41493 				enterOuterAlt(_localctx, 2);
41494 				{
41495 				setState(5668);
41496 				match(CONTROL);
41497 				}
41498 				break;
41499 			case 3:
41500 				enterOuterAlt(_localctx, 3);
41501 				{
41502 				setState(5669);
41503 				match(DELETE);
41504 				}
41505 				break;
41506 			case 4:
41507 				enterOuterAlt(_localctx, 4);
41508 				{
41509 				setState(5670);
41510 				match(EXECUTE);
41511 				}
41512 				break;
41513 			case 5:
41514 				enterOuterAlt(_localctx, 5);
41515 				{
41516 				setState(5671);
41517 				match(INSERT);
41518 				}
41519 				break;
41520 			case 6:
41521 				enterOuterAlt(_localctx, 6);
41522 				{
41523 				setState(5672);
41524 				match(RECEIVE);
41525 				}
41526 				break;
41527 			case 7:
41528 				enterOuterAlt(_localctx, 7);
41529 				{
41530 				setState(5673);
41531 				match(REFERENCES);
41532 				}
41533 				break;
41534 			case 8:
41535 				enterOuterAlt(_localctx, 8);
41536 				{
41537 				setState(5674);
41538 				match(SELECT);
41539 				}
41540 				break;
41541 			case 9:
41542 				enterOuterAlt(_localctx, 9);
41543 				{
41544 				setState(5675);
41545 				match(TAKE);
41546 				setState(5676);
41547 				match(OWNERSHIP);
41548 				}
41549 				break;
41550 			case 10:
41551 				enterOuterAlt(_localctx, 10);
41552 				{
41553 				setState(5677);
41554 				match(UPDATE);
41555 				}
41556 				break;
41557 			case 11:
41558 				enterOuterAlt(_localctx, 11);
41559 				{
41560 				setState(5678);
41561 				match(VIEW);
41562 				setState(5679);
41563 				match(CHANGE);
41564 				setState(5680);
41565 				match(TRACKING);
41566 				}
41567 				break;
41568 			case 12:
41569 				enterOuterAlt(_localctx, 12);
41570 				{
41571 				setState(5681);
41572 				match(VIEW);
41573 				setState(5682);
41574 				match(DEFINITION);
41575 				}
41576 				break;
41577 			}
41578 		}
41579 		catch (RecognitionException re) {
41580 			_localctx.exception = re;
41581 			_errHandler.reportError(this, re);
41582 			_errHandler.recover(this, re);
41583 		}
41584 		finally {
41585 			exitRule();
41586 		}
41587 		return _localctx;
41588 	}
41589 
41590 	public static class ServerPermissionContext extends ParserRuleContext {
41591 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
41592 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
41593 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
41594 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
41595 		public TerminalNode RESOURCES() { return getToken(SQLServerStatementParser.RESOURCES, 0); }
41596 		public TerminalNode SETTINGS() { return getToken(SQLServerStatementParser.SETTINGS, 0); }
41597 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
41598 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
41599 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
41600 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
41601 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
41602 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
41603 		public TerminalNode CONNECTION() { return getToken(SQLServerStatementParser.CONNECTION, 0); }
41604 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
41605 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
41606 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
41607 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
41608 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
41609 		public TerminalNode SESSION() { return getToken(SQLServerStatementParser.SESSION, 0); }
41610 		public TerminalNode LINKED() { return getToken(SQLServerStatementParser.LINKED, 0); }
41611 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
41612 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
41613 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
41614 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
41615 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
41616 		public TerminalNode SQL() { return getToken(SQLServerStatementParser.SQL, 0); }
41617 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
41618 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
41619 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
41620 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
41621 		public TerminalNode ACCESS() { return getToken(SQLServerStatementParser.ACCESS, 0); }
41622 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
41623 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
41624 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
41625 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
41626 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
41627 		public TerminalNode SECURABLES() { return getToken(SQLServerStatementParser.SECURABLES, 0); }
41628 		public TerminalNode SHUTDOWN() { return getToken(SQLServerStatementParser.SHUTDOWN, 0); }
41629 		public TerminalNode UNSAFE() { return getToken(SQLServerStatementParser.UNSAFE, 0); }
41630 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
41631 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
41632 		public ServerPermissionContext(ParserRuleContext parent, int invokingState) {
41633 			super(parent, invokingState);
41634 		}
41635 		@Override public int getRuleIndex() { return RULE_serverPermission; }
41636 		@Override
41637 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41638 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServerPermission(this);
41639 			else return visitor.visitChildren(this);
41640 		}
41641 	}
41642 
41643 	public final ServerPermissionContext serverPermission() throws RecognitionException {
41644 		ServerPermissionContext _localctx = new ServerPermissionContext(_ctx, getState());
41645 		enterRule(_localctx, 802, RULE_serverPermission);
41646 		int _la;
41647 		try {
41648 			setState(5762);
41649 			_errHandler.sync(this);
41650 			switch ( getInterpreter().adaptivePredict(_input,664,_ctx) ) {
41651 			case 1:
41652 				enterOuterAlt(_localctx, 1);
41653 				{
41654 				setState(5685);
41655 				match(ADMINISTER);
41656 				setState(5686);
41657 				match(BULK);
41658 				setState(5687);
41659 				match(OPERATIONS);
41660 				}
41661 				break;
41662 			case 2:
41663 				enterOuterAlt(_localctx, 2);
41664 				{
41665 				setState(5688);
41666 				match(ALTER);
41667 				setState(5694);
41668 				_errHandler.sync(this);
41669 				switch (_input.LA(1)) {
41670 				case RESOURCES:
41671 					{
41672 					setState(5689);
41673 					match(RESOURCES);
41674 					}
41675 					break;
41676 				case SETTINGS:
41677 					{
41678 					setState(5690);
41679 					match(SETTINGS);
41680 					}
41681 					break;
41682 				case TRACE:
41683 					{
41684 					setState(5691);
41685 					match(TRACE);
41686 					}
41687 					break;
41688 				case SERVER:
41689 					{
41690 					setState(5692);
41691 					match(SERVER);
41692 					setState(5693);
41693 					match(STATE);
41694 					}
41695 					break;
41696 				default:
41697 					throw new NoViableAltException(this);
41698 				}
41699 				}
41700 				break;
41701 			case 3:
41702 				enterOuterAlt(_localctx, 3);
41703 				{
41704 				setState(5696);
41705 				match(ALTER);
41706 				setState(5697);
41707 				match(ANY);
41708 				setState(5715);
41709 				_errHandler.sync(this);
41710 				switch ( getInterpreter().adaptivePredict(_input,662,_ctx) ) {
41711 				case 1:
41712 					{
41713 					setState(5698);
41714 					match(AVAILABILITY);
41715 					setState(5699);
41716 					match(GROUP);
41717 					}
41718 					break;
41719 				case 2:
41720 					{
41721 					setState(5700);
41722 					match(CONNECTION);
41723 					}
41724 					break;
41725 				case 3:
41726 					{
41727 					setState(5701);
41728 					match(CREDENTIAL);
41729 					}
41730 					break;
41731 				case 4:
41732 					{
41733 					setState(5702);
41734 					match(DATABASE);
41735 					}
41736 					break;
41737 				case 5:
41738 					{
41739 					setState(5703);
41740 					match(ENDPOINT);
41741 					}
41742 					break;
41743 				case 6:
41744 					{
41745 					setState(5704);
41746 					match(EVENT);
41747 					setState(5705);
41748 					match(NOTIFICATION);
41749 					}
41750 					break;
41751 				case 7:
41752 					{
41753 					setState(5706);
41754 					match(EVENT);
41755 					setState(5707);
41756 					match(SESSION);
41757 					}
41758 					break;
41759 				case 8:
41760 					{
41761 					setState(5708);
41762 					match(LINKED);
41763 					setState(5709);
41764 					match(SERVER);
41765 					}
41766 					break;
41767 				case 9:
41768 					{
41769 					setState(5710);
41770 					match(LOGIN);
41771 					}
41772 					break;
41773 				case 10:
41774 					{
41775 					setState(5711);
41776 					match(SERVER);
41777 					setState(5712);
41778 					match(AUDIT);
41779 					}
41780 					break;
41781 				case 11:
41782 					{
41783 					setState(5713);
41784 					match(SERVER);
41785 					setState(5714);
41786 					match(ROLE);
41787 					}
41788 					break;
41789 				}
41790 				}
41791 				break;
41792 			case 4:
41793 				enterOuterAlt(_localctx, 4);
41794 				{
41795 				setState(5717);
41796 				match(AUTHENTICATE);
41797 				setState(5718);
41798 				match(SERVER);
41799 				}
41800 				break;
41801 			case 5:
41802 				enterOuterAlt(_localctx, 5);
41803 				{
41804 				setState(5719);
41805 				match(CONNECT);
41806 				setState(5720);
41807 				match(ANY);
41808 				setState(5721);
41809 				match(DATABASE);
41810 				}
41811 				break;
41812 			case 6:
41813 				enterOuterAlt(_localctx, 6);
41814 				{
41815 				setState(5722);
41816 				match(CONNECT);
41817 				setState(5723);
41818 				match(SQL);
41819 				}
41820 				break;
41821 			case 7:
41822 				enterOuterAlt(_localctx, 7);
41823 				{
41824 				setState(5724);
41825 				match(CONTROL);
41826 				setState(5725);
41827 				match(SERVER);
41828 				}
41829 				break;
41830 			case 8:
41831 				enterOuterAlt(_localctx, 8);
41832 				{
41833 				setState(5726);
41834 				match(CREATE);
41835 				setState(5727);
41836 				match(ANY);
41837 				setState(5728);
41838 				match(DATABASE);
41839 				}
41840 				break;
41841 			case 9:
41842 				enterOuterAlt(_localctx, 9);
41843 				{
41844 				setState(5729);
41845 				match(CREATE);
41846 				setState(5741);
41847 				_errHandler.sync(this);
41848 				switch (_input.LA(1)) {
41849 				case AVAILABILITY:
41850 					{
41851 					setState(5730);
41852 					match(AVAILABILITY);
41853 					setState(5731);
41854 					match(GROUP);
41855 					}
41856 					break;
41857 				case DDL:
41858 					{
41859 					setState(5732);
41860 					match(DDL);
41861 					setState(5733);
41862 					match(EVENT);
41863 					setState(5734);
41864 					match(NOTIFICATION);
41865 					}
41866 					break;
41867 				case ENDPOINT:
41868 					{
41869 					setState(5735);
41870 					match(ENDPOINT);
41871 					}
41872 					break;
41873 				case SERVER:
41874 					{
41875 					setState(5736);
41876 					match(SERVER);
41877 					setState(5737);
41878 					match(ROLE);
41879 					}
41880 					break;
41881 				case TRACE:
41882 					{
41883 					setState(5738);
41884 					match(TRACE);
41885 					setState(5739);
41886 					match(EVENT);
41887 					setState(5740);
41888 					match(NOTIFICATION);
41889 					}
41890 					break;
41891 				default:
41892 					throw new NoViableAltException(this);
41893 				}
41894 				}
41895 				break;
41896 			case 10:
41897 				enterOuterAlt(_localctx, 10);
41898 				{
41899 				setState(5743);
41900 				match(EXTERNAL);
41901 				setState(5744);
41902 				match(ACCESS);
41903 				setState(5745);
41904 				match(ASSEMBLY);
41905 				}
41906 				break;
41907 			case 11:
41908 				enterOuterAlt(_localctx, 11);
41909 				{
41910 				setState(5746);
41911 				match(IMPERSONATE);
41912 				setState(5747);
41913 				match(ANY);
41914 				setState(5748);
41915 				match(LOGIN);
41916 				}
41917 				break;
41918 			case 12:
41919 				enterOuterAlt(_localctx, 12);
41920 				{
41921 				setState(5749);
41922 				match(SELECT);
41923 				setState(5750);
41924 				match(ALL);
41925 				setState(5751);
41926 				match(USER);
41927 				setState(5752);
41928 				match(SECURABLES);
41929 				}
41930 				break;
41931 			case 13:
41932 				enterOuterAlt(_localctx, 13);
41933 				{
41934 				setState(5753);
41935 				match(SHUTDOWN);
41936 				}
41937 				break;
41938 			case 14:
41939 				enterOuterAlt(_localctx, 14);
41940 				{
41941 				setState(5754);
41942 				match(UNSAFE);
41943 				setState(5755);
41944 				match(ASSEMBLY);
41945 				}
41946 				break;
41947 			case 15:
41948 				enterOuterAlt(_localctx, 15);
41949 				{
41950 				setState(5756);
41951 				match(VIEW);
41952 				setState(5757);
41953 				match(ANY);
41954 				setState(5758);
41955 				_la = _input.LA(1);
41956 				if ( !(_la==DATABASE || _la==DEFINITION) ) {
41957 				_errHandler.recoverInline(this);
41958 				}
41959 				else {
41960 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41961 					_errHandler.reportMatch(this);
41962 					consume();
41963 				}
41964 				}
41965 				break;
41966 			case 16:
41967 				enterOuterAlt(_localctx, 16);
41968 				{
41969 				setState(5759);
41970 				match(VIEW);
41971 				setState(5760);
41972 				match(SERVER);
41973 				setState(5761);
41974 				match(STATE);
41975 				}
41976 				break;
41977 			}
41978 		}
41979 		catch (RecognitionException re) {
41980 			_localctx.exception = re;
41981 			_errHandler.reportError(this, re);
41982 			_errHandler.recover(this, re);
41983 		}
41984 		finally {
41985 			exitRule();
41986 		}
41987 		return _localctx;
41988 	}
41989 
41990 	public static class ServerPrincipalPermissionContext extends ParserRuleContext {
41991 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
41992 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
41993 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
41994 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
41995 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
41996 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
41997 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
41998 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
41999 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
42000 		public ServerPrincipalPermissionContext(ParserRuleContext parent, int invokingState) {
42001 			super(parent, invokingState);
42002 		}
42003 		@Override public int getRuleIndex() { return RULE_serverPrincipalPermission; }
42004 		@Override
42005 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42006 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServerPrincipalPermission(this);
42007 			else return visitor.visitChildren(this);
42008 		}
42009 	}
42010 
42011 	public final ServerPrincipalPermissionContext serverPrincipalPermission() throws RecognitionException {
42012 		ServerPrincipalPermissionContext _localctx = new ServerPrincipalPermissionContext(_ctx, getState());
42013 		enterRule(_localctx, 804, RULE_serverPrincipalPermission);
42014 		int _la;
42015 		try {
42016 			setState(5782);
42017 			_errHandler.sync(this);
42018 			switch ( getInterpreter().adaptivePredict(_input,668,_ctx) ) {
42019 			case 1:
42020 				enterOuterAlt(_localctx, 1);
42021 				{
42022 				setState(5764);
42023 				match(CONTROL);
42024 				setState(5766);
42025 				_errHandler.sync(this);
42026 				_la = _input.LA(1);
42027 				if (_la==SERVER) {
42028 					{
42029 					setState(5765);
42030 					match(SERVER);
42031 					}
42032 				}
42033 
42034 				}
42035 				break;
42036 			case 2:
42037 				enterOuterAlt(_localctx, 2);
42038 				{
42039 				setState(5768);
42040 				match(IMPERSONATE);
42041 				}
42042 				break;
42043 			case 3:
42044 				enterOuterAlt(_localctx, 3);
42045 				{
42046 				setState(5769);
42047 				match(VIEW);
42048 				setState(5771);
42049 				_errHandler.sync(this);
42050 				_la = _input.LA(1);
42051 				if (_la==ANY) {
42052 					{
42053 					setState(5770);
42054 					match(ANY);
42055 					}
42056 				}
42057 
42058 				setState(5773);
42059 				match(DEFINITION);
42060 				}
42061 				break;
42062 			case 4:
42063 				enterOuterAlt(_localctx, 4);
42064 				{
42065 				setState(5774);
42066 				match(ALTER);
42067 				}
42068 				break;
42069 			case 5:
42070 				enterOuterAlt(_localctx, 5);
42071 				{
42072 				setState(5775);
42073 				match(ALTER);
42074 				setState(5776);
42075 				match(ANY);
42076 				setState(5780);
42077 				_errHandler.sync(this);
42078 				switch (_input.LA(1)) {
42079 				case LOGIN:
42080 					{
42081 					setState(5777);
42082 					match(LOGIN);
42083 					}
42084 					break;
42085 				case SERVER:
42086 					{
42087 					setState(5778);
42088 					match(SERVER);
42089 					setState(5779);
42090 					match(ROLE);
42091 					}
42092 					break;
42093 				default:
42094 					throw new NoViableAltException(this);
42095 				}
42096 				}
42097 				break;
42098 			}
42099 		}
42100 		catch (RecognitionException re) {
42101 			_localctx.exception = re;
42102 			_errHandler.reportError(this, re);
42103 			_errHandler.recover(this, re);
42104 		}
42105 		finally {
42106 			exitRule();
42107 		}
42108 		return _localctx;
42109 	}
42110 
42111 	public static class DatabasePermissionContext extends ParserRuleContext {
42112 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
42113 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
42114 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
42115 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
42116 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
42117 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
42118 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
42119 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
42120 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
42121 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
42122 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
42123 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
42124 		public TerminalNode CONNECTION() { return getToken(SQLServerStatementParser.CONNECTION, 0); }
42125 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
42126 		public TerminalNode MASTER() { return getToken(SQLServerStatementParser.MASTER, 0); }
42127 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
42128 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
42129 		public TerminalNode DATASPACE() { return getToken(SQLServerStatementParser.DATASPACE, 0); }
42130 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
42131 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
42132 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
42133 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
42134 		public TerminalNode MASK() { return getToken(SQLServerStatementParser.MASK, 0); }
42135 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
42136 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
42137 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
42138 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
42139 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
42140 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
42141 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
42142 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
42143 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
42144 		public TerminalNode SECURITY() { return getToken(SQLServerStatementParser.SECURITY, 0); }
42145 		public TerminalNode POLICY() { return getToken(SQLServerStatementParser.POLICY, 0); }
42146 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
42147 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
42148 		public TerminalNode SESSION() { return getToken(SQLServerStatementParser.SESSION, 0); }
42149 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
42150 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
42151 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
42152 		public TerminalNode DATA() { return getToken(SQLServerStatementParser.DATA, 0); }
42153 		public TerminalNode SOURCE() { return getToken(SQLServerStatementParser.SOURCE, 0); }
42154 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
42155 		public TerminalNode FORMAT() { return getToken(SQLServerStatementParser.FORMAT, 0); }
42156 		public TerminalNode LIBRARY() { return getToken(SQLServerStatementParser.LIBRARY, 0); }
42157 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
42158 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
42159 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
42160 		public TerminalNode CONFIGURATION() { return getToken(SQLServerStatementParser.CONFIGURATION, 0); }
42161 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
42162 		public TerminalNode BACKUP() { return getToken(SQLServerStatementParser.BACKUP, 0); }
42163 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
42164 		public TerminalNode CHECKPOINT() { return getToken(SQLServerStatementParser.CHECKPOINT, 0); }
42165 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
42166 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
42167 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
42168 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
42169 		public TerminalNode AGGREGATE() { return getToken(SQLServerStatementParser.AGGREGATE, 0); }
42170 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
42171 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
42172 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
42173 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
42174 		public TerminalNode RULE() { return getToken(SQLServerStatementParser.RULE, 0); }
42175 		public TerminalNode SYNONYM() { return getToken(SQLServerStatementParser.SYNONYM, 0); }
42176 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
42177 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
42178 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
42179 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
42180 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
42181 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
42182 		public TerminalNode SCRIPT() { return getToken(SQLServerStatementParser.SCRIPT, 0); }
42183 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
42184 		public TerminalNode KILL() { return getToken(SQLServerStatementParser.KILL, 0); }
42185 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
42186 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
42187 		public TerminalNode SHOWPLAN() { return getToken(SQLServerStatementParser.SHOWPLAN, 0); }
42188 		public TerminalNode SUBSCRIBE() { return getToken(SQLServerStatementParser.SUBSCRIBE, 0); }
42189 		public TerminalNode QUERY() { return getToken(SQLServerStatementParser.QUERY, 0); }
42190 		public TerminalNode NOTIFICATIONS() { return getToken(SQLServerStatementParser.NOTIFICATIONS, 0); }
42191 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
42192 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
42193 		public TerminalNode UNMASK() { return getToken(SQLServerStatementParser.UNMASK, 0); }
42194 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
42195 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
42196 		public DatabasePermissionContext(ParserRuleContext parent, int invokingState) {
42197 			super(parent, invokingState);
42198 		}
42199 		@Override public int getRuleIndex() { return RULE_databasePermission; }
42200 		@Override
42201 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42202 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabasePermission(this);
42203 			else return visitor.visitChildren(this);
42204 		}
42205 	}
42206 
42207 	public final DatabasePermissionContext databasePermission() throws RecognitionException {
42208 		DatabasePermissionContext _localctx = new DatabasePermissionContext(_ctx, getState());
42209 		enterRule(_localctx, 806, RULE_databasePermission);
42210 		int _la;
42211 		try {
42212 			setState(5951);
42213 			_errHandler.sync(this);
42214 			switch ( getInterpreter().adaptivePredict(_input,681,_ctx) ) {
42215 			case 1:
42216 				enterOuterAlt(_localctx, 1);
42217 				{
42218 				setState(5784);
42219 				match(ADMINISTER);
42220 				setState(5785);
42221 				match(DATABASE);
42222 				setState(5786);
42223 				match(BULK);
42224 				setState(5787);
42225 				match(OPERATIONS);
42226 				}
42227 				break;
42228 			case 2:
42229 				enterOuterAlt(_localctx, 2);
42230 				{
42231 				setState(5788);
42232 				match(ALTER);
42233 				}
42234 				break;
42235 			case 3:
42236 				enterOuterAlt(_localctx, 3);
42237 				{
42238 				setState(5789);
42239 				match(ALTER);
42240 				setState(5790);
42241 				match(TRACE);
42242 				}
42243 				break;
42244 			case 4:
42245 				enterOuterAlt(_localctx, 4);
42246 				{
42247 				setState(5791);
42248 				match(ALTER);
42249 				setState(5792);
42250 				match(ANY);
42251 				setState(5850);
42252 				_errHandler.sync(this);
42253 				switch ( getInterpreter().adaptivePredict(_input,672,_ctx) ) {
42254 				case 1:
42255 					{
42256 					setState(5793);
42257 					match(APPLICATION);
42258 					setState(5794);
42259 					match(ROLE);
42260 					}
42261 					break;
42262 				case 2:
42263 					{
42264 					setState(5795);
42265 					match(ASSEMBLY);
42266 					}
42267 					break;
42268 				case 3:
42269 					{
42270 					setState(5800);
42271 					_errHandler.sync(this);
42272 					switch (_input.LA(1)) {
42273 					case SYMMETRIC:
42274 						{
42275 						setState(5796);
42276 						match(SYMMETRIC);
42277 						}
42278 						break;
42279 					case ASYMMETRIC:
42280 						{
42281 						setState(5797);
42282 						match(ASYMMETRIC);
42283 						}
42284 						break;
42285 					case COLUMN:
42286 						{
42287 						setState(5798);
42288 						match(COLUMN);
42289 						setState(5799);
42290 						match(ENCRYPTION);
42291 						}
42292 						break;
42293 					default:
42294 						throw new NoViableAltException(this);
42295 					}
42296 					setState(5802);
42297 					match(KEY);
42298 					}
42299 					break;
42300 				case 4:
42301 					{
42302 					setState(5803);
42303 					match(CERTIFICATE);
42304 					}
42305 					break;
42306 				case 5:
42307 					{
42308 					setState(5804);
42309 					match(CONNECTION);
42310 					}
42311 					break;
42312 				case 6:
42313 					{
42314 					setState(5805);
42315 					match(COLUMN);
42316 					setState(5806);
42317 					match(MASTER);
42318 					setState(5807);
42319 					match(KEY);
42320 					setState(5808);
42321 					match(DEFINITION);
42322 					}
42323 					break;
42324 				case 7:
42325 					{
42326 					setState(5809);
42327 					match(CONTRACT);
42328 					}
42329 					break;
42330 				case 8:
42331 					{
42332 					setState(5810);
42333 					match(DATABASE);
42334 					setState(5820);
42335 					_errHandler.sync(this);
42336 					switch ( getInterpreter().adaptivePredict(_input,670,_ctx) ) {
42337 					case 1:
42338 						{
42339 						setState(5811);
42340 						match(AUDIT);
42341 						}
42342 						break;
42343 					case 2:
42344 						{
42345 						setState(5812);
42346 						match(DDL);
42347 						setState(5813);
42348 						match(TRIGGER);
42349 						}
42350 						break;
42351 					case 3:
42352 						{
42353 						setState(5814);
42354 						match(EVENT);
42355 						setState(5815);
42356 						match(NOTIFICATION);
42357 						}
42358 						break;
42359 					case 4:
42360 						{
42361 						setState(5816);
42362 						match(EVENT);
42363 						setState(5817);
42364 						match(SESSION);
42365 						}
42366 						break;
42367 					case 5:
42368 						{
42369 						setState(5818);
42370 						match(SCOPED);
42371 						setState(5819);
42372 						match(CONFIGURATION);
42373 						}
42374 						break;
42375 					}
42376 					}
42377 					break;
42378 				case 9:
42379 					{
42380 					setState(5822);
42381 					match(DATASPACE);
42382 					}
42383 					break;
42384 				case 10:
42385 					{
42386 					setState(5823);
42387 					match(EVENT);
42388 					setState(5824);
42389 					_la = _input.LA(1);
42390 					if ( !(_la==SESSION || _la==NOTIFICATION) ) {
42391 					_errHandler.recoverInline(this);
42392 					}
42393 					else {
42394 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42395 						_errHandler.reportMatch(this);
42396 						consume();
42397 					}
42398 					}
42399 					break;
42400 				case 11:
42401 					{
42402 					setState(5825);
42403 					match(EXTERNAL);
42404 					setState(5831);
42405 					_errHandler.sync(this);
42406 					switch (_input.LA(1)) {
42407 					case DATA:
42408 						{
42409 						setState(5826);
42410 						match(DATA);
42411 						setState(5827);
42412 						match(SOURCE);
42413 						}
42414 						break;
42415 					case FILE:
42416 						{
42417 						setState(5828);
42418 						match(FILE);
42419 						setState(5829);
42420 						match(FORMAT);
42421 						}
42422 						break;
42423 					case LIBRARY:
42424 						{
42425 						setState(5830);
42426 						match(LIBRARY);
42427 						}
42428 						break;
42429 					default:
42430 						throw new NoViableAltException(this);
42431 					}
42432 					}
42433 					break;
42434 				case 12:
42435 					{
42436 					setState(5833);
42437 					match(FULLTEXT);
42438 					setState(5834);
42439 					match(CATALOG);
42440 					}
42441 					break;
42442 				case 13:
42443 					{
42444 					setState(5835);
42445 					match(MASK);
42446 					}
42447 					break;
42448 				case 14:
42449 					{
42450 					setState(5836);
42451 					match(MESSAGE);
42452 					setState(5837);
42453 					match(TYPE);
42454 					}
42455 					break;
42456 				case 15:
42457 					{
42458 					setState(5838);
42459 					match(REMOTE);
42460 					setState(5839);
42461 					match(SERVICE);
42462 					setState(5840);
42463 					match(BINDING);
42464 					}
42465 					break;
42466 				case 16:
42467 					{
42468 					setState(5841);
42469 					match(ROLE);
42470 					}
42471 					break;
42472 				case 17:
42473 					{
42474 					setState(5842);
42475 					match(ROUTE);
42476 					}
42477 					break;
42478 				case 18:
42479 					{
42480 					setState(5843);
42481 					match(SERVER);
42482 					setState(5844);
42483 					match(AUDIT);
42484 					}
42485 					break;
42486 				case 19:
42487 					{
42488 					setState(5845);
42489 					match(SCHEMA);
42490 					}
42491 					break;
42492 				case 20:
42493 					{
42494 					setState(5846);
42495 					match(SECURITY);
42496 					setState(5847);
42497 					match(POLICY);
42498 					}
42499 					break;
42500 				case 21:
42501 					{
42502 					setState(5848);
42503 					match(SERVICE);
42504 					}
42505 					break;
42506 				case 22:
42507 					{
42508 					setState(5849);
42509 					match(USER);
42510 					}
42511 					break;
42512 				}
42513 				}
42514 				break;
42515 			case 5:
42516 				enterOuterAlt(_localctx, 5);
42517 				{
42518 				setState(5852);
42519 				match(AUTHENTICATE);
42520 				setState(5854);
42521 				_errHandler.sync(this);
42522 				_la = _input.LA(1);
42523 				if (_la==SERVER) {
42524 					{
42525 					setState(5853);
42526 					match(SERVER);
42527 					}
42528 				}
42529 
42530 				}
42531 				break;
42532 			case 6:
42533 				enterOuterAlt(_localctx, 6);
42534 				{
42535 				setState(5856);
42536 				match(BACKUP);
42537 				setState(5857);
42538 				_la = _input.LA(1);
42539 				if ( !(_la==DATABASE || _la==LOG) ) {
42540 				_errHandler.recoverInline(this);
42541 				}
42542 				else {
42543 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42544 					_errHandler.reportMatch(this);
42545 					consume();
42546 				}
42547 				}
42548 				break;
42549 			case 7:
42550 				enterOuterAlt(_localctx, 7);
42551 				{
42552 				setState(5858);
42553 				match(CHECKPOINT);
42554 				}
42555 				break;
42556 			case 8:
42557 				enterOuterAlt(_localctx, 8);
42558 				{
42559 				setState(5859);
42560 				match(CONNECT);
42561 				}
42562 				break;
42563 			case 9:
42564 				enterOuterAlt(_localctx, 9);
42565 				{
42566 				setState(5860);
42567 				match(CONNECT);
42568 				setState(5862);
42569 				_errHandler.sync(this);
42570 				_la = _input.LA(1);
42571 				if (_la==REPLICATION) {
42572 					{
42573 					setState(5861);
42574 					match(REPLICATION);
42575 					}
42576 				}
42577 
42578 				}
42579 				break;
42580 			case 10:
42581 				enterOuterAlt(_localctx, 10);
42582 				{
42583 				setState(5864);
42584 				match(CONTROL);
42585 				setState(5866);
42586 				_errHandler.sync(this);
42587 				_la = _input.LA(1);
42588 				if (_la==SERVER) {
42589 					{
42590 					setState(5865);
42591 					match(SERVER);
42592 					}
42593 				}
42594 
42595 				}
42596 				break;
42597 			case 11:
42598 				enterOuterAlt(_localctx, 11);
42599 				{
42600 				setState(5868);
42601 				match(CREATE);
42602 				setState(5905);
42603 				_errHandler.sync(this);
42604 				switch ( getInterpreter().adaptivePredict(_input,677,_ctx) ) {
42605 				case 1:
42606 					{
42607 					setState(5869);
42608 					match(AGGREGATE);
42609 					}
42610 					break;
42611 				case 2:
42612 					{
42613 					setState(5870);
42614 					match(ASSEMBLY);
42615 					}
42616 					break;
42617 				case 3:
42618 					{
42619 					setState(5871);
42620 					_la = _input.LA(1);
42621 					if ( !(_la==SYMMETRIC || _la==ASYMMETRIC) ) {
42622 					_errHandler.recoverInline(this);
42623 					}
42624 					else {
42625 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42626 						_errHandler.reportMatch(this);
42627 						consume();
42628 					}
42629 					setState(5872);
42630 					match(KEY);
42631 					}
42632 					break;
42633 				case 4:
42634 					{
42635 					setState(5873);
42636 					match(CERTIFICATE);
42637 					}
42638 					break;
42639 				case 5:
42640 					{
42641 					setState(5874);
42642 					match(CONTRACT);
42643 					}
42644 					break;
42645 				case 6:
42646 					{
42647 					setState(5875);
42648 					match(DATABASE);
42649 					}
42650 					break;
42651 				case 7:
42652 					{
42653 					setState(5877);
42654 					_errHandler.sync(this);
42655 					_la = _input.LA(1);
42656 					if (_la==DATABASE) {
42657 						{
42658 						setState(5876);
42659 						match(DATABASE);
42660 						}
42661 					}
42662 
42663 					setState(5879);
42664 					match(DDL);
42665 					setState(5880);
42666 					match(EVENT);
42667 					setState(5881);
42668 					match(NOTIFICATION);
42669 					}
42670 					break;
42671 				case 8:
42672 					{
42673 					setState(5882);
42674 					match(DEFAULT);
42675 					}
42676 					break;
42677 				case 9:
42678 					{
42679 					setState(5883);
42680 					match(FULLTEXT);
42681 					setState(5884);
42682 					match(CATALOG);
42683 					}
42684 					break;
42685 				case 10:
42686 					{
42687 					setState(5885);
42688 					match(FUNCTION);
42689 					}
42690 					break;
42691 				case 11:
42692 					{
42693 					setState(5886);
42694 					match(MESSAGE);
42695 					setState(5887);
42696 					match(TYPE);
42697 					}
42698 					break;
42699 				case 12:
42700 					{
42701 					setState(5888);
42702 					match(PROCEDURE);
42703 					}
42704 					break;
42705 				case 13:
42706 					{
42707 					setState(5889);
42708 					match(QUEUE);
42709 					}
42710 					break;
42711 				case 14:
42712 					{
42713 					setState(5890);
42714 					match(REMOTE);
42715 					setState(5891);
42716 					match(SERVICE);
42717 					setState(5892);
42718 					match(BINDING);
42719 					}
42720 					break;
42721 				case 15:
42722 					{
42723 					setState(5893);
42724 					match(ROLE);
42725 					}
42726 					break;
42727 				case 16:
42728 					{
42729 					setState(5894);
42730 					match(ROUTE);
42731 					}
42732 					break;
42733 				case 17:
42734 					{
42735 					setState(5895);
42736 					match(RULE);
42737 					}
42738 					break;
42739 				case 18:
42740 					{
42741 					setState(5896);
42742 					match(SCHEMA);
42743 					}
42744 					break;
42745 				case 19:
42746 					{
42747 					setState(5897);
42748 					match(SERVICE);
42749 					}
42750 					break;
42751 				case 20:
42752 					{
42753 					setState(5898);
42754 					match(SYNONYM);
42755 					}
42756 					break;
42757 				case 21:
42758 					{
42759 					setState(5899);
42760 					match(TABLE);
42761 					}
42762 					break;
42763 				case 22:
42764 					{
42765 					setState(5900);
42766 					match(TYPE);
42767 					}
42768 					break;
42769 				case 23:
42770 					{
42771 					setState(5901);
42772 					match(VIEW);
42773 					}
42774 					break;
42775 				case 24:
42776 					{
42777 					setState(5902);
42778 					match(XML);
42779 					setState(5903);
42780 					match(SCHEMA);
42781 					setState(5904);
42782 					match(COLLECTION);
42783 					}
42784 					break;
42785 				}
42786 				}
42787 				break;
42788 			case 12:
42789 				enterOuterAlt(_localctx, 12);
42790 				{
42791 				setState(5907);
42792 				match(DELETE);
42793 				}
42794 				break;
42795 			case 13:
42796 				enterOuterAlt(_localctx, 13);
42797 				{
42798 				setState(5908);
42799 				match(EXECUTE);
42800 				}
42801 				break;
42802 			case 14:
42803 				enterOuterAlt(_localctx, 14);
42804 				{
42805 				setState(5909);
42806 				match(EXECUTE);
42807 				setState(5911);
42808 				_errHandler.sync(this);
42809 				_la = _input.LA(1);
42810 				if (_la==ANY) {
42811 					{
42812 					setState(5910);
42813 					match(ANY);
42814 					}
42815 				}
42816 
42817 				setState(5913);
42818 				match(EXTERNAL);
42819 				setState(5914);
42820 				match(SCRIPT);
42821 				}
42822 				break;
42823 			case 15:
42824 				enterOuterAlt(_localctx, 15);
42825 				{
42826 				setState(5915);
42827 				match(INSERT);
42828 				}
42829 				break;
42830 			case 16:
42831 				enterOuterAlt(_localctx, 16);
42832 				{
42833 				setState(5916);
42834 				match(KILL);
42835 				setState(5917);
42836 				match(DATABASE);
42837 				setState(5918);
42838 				match(CONNECTION);
42839 				}
42840 				break;
42841 			case 17:
42842 				enterOuterAlt(_localctx, 17);
42843 				{
42844 				setState(5919);
42845 				match(REFERENCES);
42846 				}
42847 				break;
42848 			case 18:
42849 				enterOuterAlt(_localctx, 18);
42850 				{
42851 				setState(5920);
42852 				match(SELECT);
42853 				}
42854 				break;
42855 			case 19:
42856 				enterOuterAlt(_localctx, 19);
42857 				{
42858 				setState(5921);
42859 				match(SHOWPLAN);
42860 				}
42861 				break;
42862 			case 20:
42863 				enterOuterAlt(_localctx, 20);
42864 				{
42865 				setState(5922);
42866 				match(SUBSCRIBE);
42867 				setState(5923);
42868 				match(QUERY);
42869 				setState(5924);
42870 				match(NOTIFICATIONS);
42871 				}
42872 				break;
42873 			case 21:
42874 				enterOuterAlt(_localctx, 21);
42875 				{
42876 				setState(5925);
42877 				match(TAKE);
42878 				setState(5926);
42879 				match(OWNERSHIP);
42880 				}
42881 				break;
42882 			case 22:
42883 				enterOuterAlt(_localctx, 22);
42884 				{
42885 				setState(5927);
42886 				match(UNMASK);
42887 				}
42888 				break;
42889 			case 23:
42890 				enterOuterAlt(_localctx, 23);
42891 				{
42892 				setState(5928);
42893 				match(UPDATE);
42894 				}
42895 				break;
42896 			case 24:
42897 				enterOuterAlt(_localctx, 24);
42898 				{
42899 				setState(5929);
42900 				match(VIEW);
42901 				setState(5930);
42902 				match(ANY);
42903 				setState(5931);
42904 				match(COLUMN);
42905 				setState(5932);
42906 				_la = _input.LA(1);
42907 				if ( !(_la==ENCRYPTION || _la==MASTER) ) {
42908 				_errHandler.recoverInline(this);
42909 				}
42910 				else {
42911 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42912 					_errHandler.reportMatch(this);
42913 					consume();
42914 				}
42915 				setState(5933);
42916 				match(KEY);
42917 				setState(5934);
42918 				match(DEFINITION);
42919 				}
42920 				break;
42921 			case 25:
42922 				enterOuterAlt(_localctx, 25);
42923 				{
42924 				setState(5935);
42925 				match(CREATE);
42926 				setState(5936);
42927 				match(ANY);
42928 				setState(5940);
42929 				_errHandler.sync(this);
42930 				switch (_input.LA(1)) {
42931 				case DATABASE:
42932 					{
42933 					setState(5937);
42934 					match(DATABASE);
42935 					}
42936 					break;
42937 				case EXTERNAL:
42938 					{
42939 					setState(5938);
42940 					match(EXTERNAL);
42941 					setState(5939);
42942 					match(LIBRARY);
42943 					}
42944 					break;
42945 				default:
42946 					throw new NoViableAltException(this);
42947 				}
42948 				}
42949 				break;
42950 			case 26:
42951 				enterOuterAlt(_localctx, 26);
42952 				{
42953 				setState(5942);
42954 				match(VIEW);
42955 				setState(5943);
42956 				_la = _input.LA(1);
42957 				if ( !(_la==DATABASE || _la==SERVER) ) {
42958 				_errHandler.recoverInline(this);
42959 				}
42960 				else {
42961 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42962 					_errHandler.reportMatch(this);
42963 					consume();
42964 				}
42965 				setState(5944);
42966 				match(STATE);
42967 				}
42968 				break;
42969 			case 27:
42970 				enterOuterAlt(_localctx, 27);
42971 				{
42972 				setState(5945);
42973 				match(VIEW);
42974 				setState(5947);
42975 				_errHandler.sync(this);
42976 				_la = _input.LA(1);
42977 				if (_la==ANY) {
42978 					{
42979 					setState(5946);
42980 					match(ANY);
42981 					}
42982 				}
42983 
42984 				setState(5949);
42985 				match(DEFINITION);
42986 				}
42987 				break;
42988 			case 28:
42989 				enterOuterAlt(_localctx, 28);
42990 				{
42991 				}
42992 				break;
42993 			}
42994 		}
42995 		catch (RecognitionException re) {
42996 			_localctx.exception = re;
42997 			_errHandler.reportError(this, re);
42998 			_errHandler.recover(this, re);
42999 		}
43000 		finally {
43001 			exitRule();
43002 		}
43003 		return _localctx;
43004 	}
43005 
43006 	public static class DatabasePrincipalPermissionContext extends ParserRuleContext {
43007 		public DatabaseUserPermissionContext databaseUserPermission() {
43008 			return getRuleContext(DatabaseUserPermissionContext.class,0);
43009 		}
43010 		public DatabaseRolePermissionContext databaseRolePermission() {
43011 			return getRuleContext(DatabaseRolePermissionContext.class,0);
43012 		}
43013 		public ApplicationRolePermissionContext applicationRolePermission() {
43014 			return getRuleContext(ApplicationRolePermissionContext.class,0);
43015 		}
43016 		public DatabasePrincipalPermissionContext(ParserRuleContext parent, int invokingState) {
43017 			super(parent, invokingState);
43018 		}
43019 		@Override public int getRuleIndex() { return RULE_databasePrincipalPermission; }
43020 		@Override
43021 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43022 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabasePrincipalPermission(this);
43023 			else return visitor.visitChildren(this);
43024 		}
43025 	}
43026 
43027 	public final DatabasePrincipalPermissionContext databasePrincipalPermission() throws RecognitionException {
43028 		DatabasePrincipalPermissionContext _localctx = new DatabasePrincipalPermissionContext(_ctx, getState());
43029 		enterRule(_localctx, 808, RULE_databasePrincipalPermission);
43030 		try {
43031 			setState(5956);
43032 			_errHandler.sync(this);
43033 			switch ( getInterpreter().adaptivePredict(_input,682,_ctx) ) {
43034 			case 1:
43035 				enterOuterAlt(_localctx, 1);
43036 				{
43037 				setState(5953);
43038 				databaseUserPermission();
43039 				}
43040 				break;
43041 			case 2:
43042 				enterOuterAlt(_localctx, 2);
43043 				{
43044 				setState(5954);
43045 				databaseRolePermission();
43046 				}
43047 				break;
43048 			case 3:
43049 				enterOuterAlt(_localctx, 3);
43050 				{
43051 				setState(5955);
43052 				applicationRolePermission();
43053 				}
43054 				break;
43055 			}
43056 		}
43057 		catch (RecognitionException re) {
43058 			_localctx.exception = re;
43059 			_errHandler.reportError(this, re);
43060 			_errHandler.recover(this, re);
43061 		}
43062 		finally {
43063 			exitRule();
43064 		}
43065 		return _localctx;
43066 	}
43067 
43068 	public static class DatabaseUserPermissionContext extends ParserRuleContext {
43069 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43070 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
43071 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43072 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43073 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43074 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43075 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
43076 		public DatabaseUserPermissionContext(ParserRuleContext parent, int invokingState) {
43077 			super(parent, invokingState);
43078 		}
43079 		@Override public int getRuleIndex() { return RULE_databaseUserPermission; }
43080 		@Override
43081 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43082 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseUserPermission(this);
43083 			else return visitor.visitChildren(this);
43084 		}
43085 	}
43086 
43087 	public final DatabaseUserPermissionContext databaseUserPermission() throws RecognitionException {
43088 		DatabaseUserPermissionContext _localctx = new DatabaseUserPermissionContext(_ctx, getState());
43089 		enterRule(_localctx, 810, RULE_databaseUserPermission);
43090 		try {
43091 			setState(5966);
43092 			_errHandler.sync(this);
43093 			switch ( getInterpreter().adaptivePredict(_input,683,_ctx) ) {
43094 			case 1:
43095 				enterOuterAlt(_localctx, 1);
43096 				{
43097 				setState(5958);
43098 				match(CONTROL);
43099 				}
43100 				break;
43101 			case 2:
43102 				enterOuterAlt(_localctx, 2);
43103 				{
43104 				setState(5959);
43105 				match(IMPERSONATE);
43106 				}
43107 				break;
43108 			case 3:
43109 				enterOuterAlt(_localctx, 3);
43110 				{
43111 				setState(5960);
43112 				match(ALTER);
43113 				}
43114 				break;
43115 			case 4:
43116 				enterOuterAlt(_localctx, 4);
43117 				{
43118 				setState(5961);
43119 				match(VIEW);
43120 				setState(5962);
43121 				match(DEFINITION);
43122 				}
43123 				break;
43124 			case 5:
43125 				enterOuterAlt(_localctx, 5);
43126 				{
43127 				setState(5963);
43128 				match(ALTER);
43129 				setState(5964);
43130 				match(ANY);
43131 				setState(5965);
43132 				match(USER);
43133 				}
43134 				break;
43135 			}
43136 		}
43137 		catch (RecognitionException re) {
43138 			_localctx.exception = re;
43139 			_errHandler.reportError(this, re);
43140 			_errHandler.recover(this, re);
43141 		}
43142 		finally {
43143 			exitRule();
43144 		}
43145 		return _localctx;
43146 	}
43147 
43148 	public static class DatabaseRolePermissionContext extends ParserRuleContext {
43149 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43150 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43151 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43152 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43153 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43154 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43155 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43156 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
43157 		public DatabaseRolePermissionContext(ParserRuleContext parent, int invokingState) {
43158 			super(parent, invokingState);
43159 		}
43160 		@Override public int getRuleIndex() { return RULE_databaseRolePermission; }
43161 		@Override
43162 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43163 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseRolePermission(this);
43164 			else return visitor.visitChildren(this);
43165 		}
43166 	}
43167 
43168 	public final DatabaseRolePermissionContext databaseRolePermission() throws RecognitionException {
43169 		DatabaseRolePermissionContext _localctx = new DatabaseRolePermissionContext(_ctx, getState());
43170 		enterRule(_localctx, 812, RULE_databaseRolePermission);
43171 		try {
43172 			setState(5977);
43173 			_errHandler.sync(this);
43174 			switch ( getInterpreter().adaptivePredict(_input,684,_ctx) ) {
43175 			case 1:
43176 				enterOuterAlt(_localctx, 1);
43177 				{
43178 				setState(5968);
43179 				match(CONTROL);
43180 				}
43181 				break;
43182 			case 2:
43183 				enterOuterAlt(_localctx, 2);
43184 				{
43185 				setState(5969);
43186 				match(TAKE);
43187 				setState(5970);
43188 				match(OWNERSHIP);
43189 				}
43190 				break;
43191 			case 3:
43192 				enterOuterAlt(_localctx, 3);
43193 				{
43194 				setState(5971);
43195 				match(ALTER);
43196 				}
43197 				break;
43198 			case 4:
43199 				enterOuterAlt(_localctx, 4);
43200 				{
43201 				setState(5972);
43202 				match(VIEW);
43203 				setState(5973);
43204 				match(DEFINITION);
43205 				}
43206 				break;
43207 			case 5:
43208 				enterOuterAlt(_localctx, 5);
43209 				{
43210 				setState(5974);
43211 				match(ALTER);
43212 				setState(5975);
43213 				match(ANY);
43214 				setState(5976);
43215 				match(ROLE);
43216 				}
43217 				break;
43218 			}
43219 		}
43220 		catch (RecognitionException re) {
43221 			_localctx.exception = re;
43222 			_errHandler.reportError(this, re);
43223 			_errHandler.recover(this, re);
43224 		}
43225 		finally {
43226 			exitRule();
43227 		}
43228 		return _localctx;
43229 	}
43230 
43231 	public static class ApplicationRolePermissionContext extends ParserRuleContext {
43232 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43233 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43234 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43235 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43236 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43237 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
43238 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
43239 		public ApplicationRolePermissionContext(ParserRuleContext parent, int invokingState) {
43240 			super(parent, invokingState);
43241 		}
43242 		@Override public int getRuleIndex() { return RULE_applicationRolePermission; }
43243 		@Override
43244 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43245 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitApplicationRolePermission(this);
43246 			else return visitor.visitChildren(this);
43247 		}
43248 	}
43249 
43250 	public final ApplicationRolePermissionContext applicationRolePermission() throws RecognitionException {
43251 		ApplicationRolePermissionContext _localctx = new ApplicationRolePermissionContext(_ctx, getState());
43252 		enterRule(_localctx, 814, RULE_applicationRolePermission);
43253 		try {
43254 			setState(5987);
43255 			_errHandler.sync(this);
43256 			switch ( getInterpreter().adaptivePredict(_input,685,_ctx) ) {
43257 			case 1:
43258 				enterOuterAlt(_localctx, 1);
43259 				{
43260 				setState(5979);
43261 				match(CONTROL);
43262 				}
43263 				break;
43264 			case 2:
43265 				enterOuterAlt(_localctx, 2);
43266 				{
43267 				setState(5980);
43268 				match(ALTER);
43269 				}
43270 				break;
43271 			case 3:
43272 				enterOuterAlt(_localctx, 3);
43273 				{
43274 				setState(5981);
43275 				match(VIEW);
43276 				setState(5982);
43277 				match(DEFINITION);
43278 				}
43279 				break;
43280 			case 4:
43281 				enterOuterAlt(_localctx, 4);
43282 				{
43283 				setState(5983);
43284 				match(ALTER);
43285 				setState(5984);
43286 				match(ANY);
43287 				setState(5985);
43288 				match(APPLICATION);
43289 				setState(5986);
43290 				match(ROLE);
43291 				}
43292 				break;
43293 			}
43294 		}
43295 		catch (RecognitionException re) {
43296 			_localctx.exception = re;
43297 			_errHandler.reportError(this, re);
43298 			_errHandler.recover(this, re);
43299 		}
43300 		finally {
43301 			exitRule();
43302 		}
43303 		return _localctx;
43304 	}
43305 
43306 	public static class DatabaseScopedCredentialPermissionContext extends ParserRuleContext {
43307 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43308 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43309 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43310 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43311 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
43312 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43313 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43314 		public DatabaseScopedCredentialPermissionContext(ParserRuleContext parent, int invokingState) {
43315 			super(parent, invokingState);
43316 		}
43317 		@Override public int getRuleIndex() { return RULE_databaseScopedCredentialPermission; }
43318 		@Override
43319 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43320 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseScopedCredentialPermission(this);
43321 			else return visitor.visitChildren(this);
43322 		}
43323 	}
43324 
43325 	public final DatabaseScopedCredentialPermissionContext databaseScopedCredentialPermission() throws RecognitionException {
43326 		DatabaseScopedCredentialPermissionContext _localctx = new DatabaseScopedCredentialPermissionContext(_ctx, getState());
43327 		enterRule(_localctx, 816, RULE_databaseScopedCredentialPermission);
43328 		try {
43329 			setState(5996);
43330 			_errHandler.sync(this);
43331 			switch (_input.LA(1)) {
43332 			case CONTROL:
43333 				enterOuterAlt(_localctx, 1);
43334 				{
43335 				setState(5989);
43336 				match(CONTROL);
43337 				}
43338 				break;
43339 			case TAKE:
43340 				enterOuterAlt(_localctx, 2);
43341 				{
43342 				setState(5990);
43343 				match(TAKE);
43344 				setState(5991);
43345 				match(OWNERSHIP);
43346 				}
43347 				break;
43348 			case ALTER:
43349 				enterOuterAlt(_localctx, 3);
43350 				{
43351 				setState(5992);
43352 				match(ALTER);
43353 				}
43354 				break;
43355 			case REFERENCES:
43356 				enterOuterAlt(_localctx, 4);
43357 				{
43358 				setState(5993);
43359 				match(REFERENCES);
43360 				}
43361 				break;
43362 			case VIEW:
43363 				enterOuterAlt(_localctx, 5);
43364 				{
43365 				setState(5994);
43366 				match(VIEW);
43367 				setState(5995);
43368 				match(DEFINITION);
43369 				}
43370 				break;
43371 			default:
43372 				throw new NoViableAltException(this);
43373 			}
43374 		}
43375 		catch (RecognitionException re) {
43376 			_localctx.exception = re;
43377 			_errHandler.reportError(this, re);
43378 			_errHandler.recover(this, re);
43379 		}
43380 		finally {
43381 			exitRule();
43382 		}
43383 		return _localctx;
43384 	}
43385 
43386 	public static class SchemaPermissionContext extends ParserRuleContext {
43387 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43388 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43389 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
43390 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
43391 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
43392 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
43393 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
43394 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
43395 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
43396 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43397 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43398 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
43399 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43400 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
43401 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
43402 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43403 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43404 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
43405 		public SchemaPermissionContext(ParserRuleContext parent, int invokingState) {
43406 			super(parent, invokingState);
43407 		}
43408 		@Override public int getRuleIndex() { return RULE_schemaPermission; }
43409 		@Override
43410 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43411 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaPermission(this);
43412 			else return visitor.visitChildren(this);
43413 		}
43414 	}
43415 
43416 	public final SchemaPermissionContext schemaPermission() throws RecognitionException {
43417 		SchemaPermissionContext _localctx = new SchemaPermissionContext(_ctx, getState());
43418 		enterRule(_localctx, 818, RULE_schemaPermission);
43419 		try {
43420 			setState(6018);
43421 			_errHandler.sync(this);
43422 			switch ( getInterpreter().adaptivePredict(_input,687,_ctx) ) {
43423 			case 1:
43424 				enterOuterAlt(_localctx, 1);
43425 				{
43426 				setState(5998);
43427 				match(ALTER);
43428 				}
43429 				break;
43430 			case 2:
43431 				enterOuterAlt(_localctx, 2);
43432 				{
43433 				setState(5999);
43434 				match(CONTROL);
43435 				}
43436 				break;
43437 			case 3:
43438 				enterOuterAlt(_localctx, 3);
43439 				{
43440 				setState(6000);
43441 				match(CREATE);
43442 				setState(6001);
43443 				match(SEQUENCE);
43444 				}
43445 				break;
43446 			case 4:
43447 				enterOuterAlt(_localctx, 4);
43448 				{
43449 				setState(6002);
43450 				match(DELETE);
43451 				}
43452 				break;
43453 			case 5:
43454 				enterOuterAlt(_localctx, 5);
43455 				{
43456 				setState(6003);
43457 				match(EXECUTE);
43458 				}
43459 				break;
43460 			case 6:
43461 				enterOuterAlt(_localctx, 6);
43462 				{
43463 				setState(6004);
43464 				match(INSERT);
43465 				}
43466 				break;
43467 			case 7:
43468 				enterOuterAlt(_localctx, 7);
43469 				{
43470 				setState(6005);
43471 				match(REFERENCES);
43472 				}
43473 				break;
43474 			case 8:
43475 				enterOuterAlt(_localctx, 8);
43476 				{
43477 				setState(6006);
43478 				match(SELECT);
43479 				}
43480 				break;
43481 			case 9:
43482 				enterOuterAlt(_localctx, 9);
43483 				{
43484 				setState(6007);
43485 				match(TAKE);
43486 				setState(6008);
43487 				match(OWNERSHIP);
43488 				}
43489 				break;
43490 			case 10:
43491 				enterOuterAlt(_localctx, 10);
43492 				{
43493 				setState(6009);
43494 				match(UPDATE);
43495 				}
43496 				break;
43497 			case 11:
43498 				enterOuterAlt(_localctx, 11);
43499 				{
43500 				setState(6010);
43501 				match(VIEW);
43502 				setState(6011);
43503 				match(CHANGE);
43504 				setState(6012);
43505 				match(TRACKING);
43506 				}
43507 				break;
43508 			case 12:
43509 				enterOuterAlt(_localctx, 12);
43510 				{
43511 				setState(6013);
43512 				match(VIEW);
43513 				setState(6014);
43514 				match(DEFINITION);
43515 				}
43516 				break;
43517 			case 13:
43518 				enterOuterAlt(_localctx, 13);
43519 				{
43520 				setState(6015);
43521 				match(ALTER);
43522 				setState(6016);
43523 				match(ANY);
43524 				setState(6017);
43525 				match(SCHEMA);
43526 				}
43527 				break;
43528 			}
43529 		}
43530 		catch (RecognitionException re) {
43531 			_localctx.exception = re;
43532 			_errHandler.reportError(this, re);
43533 			_errHandler.recover(this, re);
43534 		}
43535 		finally {
43536 			exitRule();
43537 		}
43538 		return _localctx;
43539 	}
43540 
43541 	public static class SearchPropertyListPermissionContext extends ParserRuleContext {
43542 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43543 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43544 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
43545 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43546 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43547 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43548 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43549 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43550 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
43551 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
43552 		public SearchPropertyListPermissionContext(ParserRuleContext parent, int invokingState) {
43553 			super(parent, invokingState);
43554 		}
43555 		@Override public int getRuleIndex() { return RULE_searchPropertyListPermission; }
43556 		@Override
43557 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43558 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSearchPropertyListPermission(this);
43559 			else return visitor.visitChildren(this);
43560 		}
43561 	}
43562 
43563 	public final SearchPropertyListPermissionContext searchPropertyListPermission() throws RecognitionException {
43564 		SearchPropertyListPermissionContext _localctx = new SearchPropertyListPermissionContext(_ctx, getState());
43565 		enterRule(_localctx, 820, RULE_searchPropertyListPermission);
43566 		try {
43567 			setState(6031);
43568 			_errHandler.sync(this);
43569 			switch ( getInterpreter().adaptivePredict(_input,688,_ctx) ) {
43570 			case 1:
43571 				enterOuterAlt(_localctx, 1);
43572 				{
43573 				setState(6020);
43574 				match(ALTER);
43575 				}
43576 				break;
43577 			case 2:
43578 				enterOuterAlt(_localctx, 2);
43579 				{
43580 				setState(6021);
43581 				match(CONTROL);
43582 				}
43583 				break;
43584 			case 3:
43585 				enterOuterAlt(_localctx, 3);
43586 				{
43587 				setState(6022);
43588 				match(REFERENCES);
43589 				}
43590 				break;
43591 			case 4:
43592 				enterOuterAlt(_localctx, 4);
43593 				{
43594 				setState(6023);
43595 				match(TAKE);
43596 				setState(6024);
43597 				match(OWNERSHIP);
43598 				}
43599 				break;
43600 			case 5:
43601 				enterOuterAlt(_localctx, 5);
43602 				{
43603 				setState(6025);
43604 				match(VIEW);
43605 				setState(6026);
43606 				match(DEFINITION);
43607 				}
43608 				break;
43609 			case 6:
43610 				enterOuterAlt(_localctx, 6);
43611 				{
43612 				setState(6027);
43613 				match(ALTER);
43614 				setState(6028);
43615 				match(ANY);
43616 				setState(6029);
43617 				match(FULLTEXT);
43618 				setState(6030);
43619 				match(CATALOG);
43620 				}
43621 				break;
43622 			}
43623 		}
43624 		catch (RecognitionException re) {
43625 			_localctx.exception = re;
43626 			_errHandler.reportError(this, re);
43627 			_errHandler.recover(this, re);
43628 		}
43629 		finally {
43630 			exitRule();
43631 		}
43632 		return _localctx;
43633 	}
43634 
43635 	public static class ServiceBrokerPermissionContext extends ParserRuleContext {
43636 		public ServiceBrokerContractsPermissionContext serviceBrokerContractsPermission() {
43637 			return getRuleContext(ServiceBrokerContractsPermissionContext.class,0);
43638 		}
43639 		public ServiceBrokerMessageTypesPermissionContext serviceBrokerMessageTypesPermission() {
43640 			return getRuleContext(ServiceBrokerMessageTypesPermissionContext.class,0);
43641 		}
43642 		public ServiceBrokerRemoteServiceBindingsPermissionContext serviceBrokerRemoteServiceBindingsPermission() {
43643 			return getRuleContext(ServiceBrokerRemoteServiceBindingsPermissionContext.class,0);
43644 		}
43645 		public ServiceBrokerRoutesPermissionContext serviceBrokerRoutesPermission() {
43646 			return getRuleContext(ServiceBrokerRoutesPermissionContext.class,0);
43647 		}
43648 		public ServiceBrokerServicesPermissionContext serviceBrokerServicesPermission() {
43649 			return getRuleContext(ServiceBrokerServicesPermissionContext.class,0);
43650 		}
43651 		public ServiceBrokerPermissionContext(ParserRuleContext parent, int invokingState) {
43652 			super(parent, invokingState);
43653 		}
43654 		@Override public int getRuleIndex() { return RULE_serviceBrokerPermission; }
43655 		@Override
43656 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43657 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerPermission(this);
43658 			else return visitor.visitChildren(this);
43659 		}
43660 	}
43661 
43662 	public final ServiceBrokerPermissionContext serviceBrokerPermission() throws RecognitionException {
43663 		ServiceBrokerPermissionContext _localctx = new ServiceBrokerPermissionContext(_ctx, getState());
43664 		enterRule(_localctx, 822, RULE_serviceBrokerPermission);
43665 		try {
43666 			setState(6038);
43667 			_errHandler.sync(this);
43668 			switch ( getInterpreter().adaptivePredict(_input,689,_ctx) ) {
43669 			case 1:
43670 				enterOuterAlt(_localctx, 1);
43671 				{
43672 				setState(6033);
43673 				serviceBrokerContractsPermission();
43674 				}
43675 				break;
43676 			case 2:
43677 				enterOuterAlt(_localctx, 2);
43678 				{
43679 				setState(6034);
43680 				serviceBrokerMessageTypesPermission();
43681 				}
43682 				break;
43683 			case 3:
43684 				enterOuterAlt(_localctx, 3);
43685 				{
43686 				setState(6035);
43687 				serviceBrokerRemoteServiceBindingsPermission();
43688 				}
43689 				break;
43690 			case 4:
43691 				enterOuterAlt(_localctx, 4);
43692 				{
43693 				setState(6036);
43694 				serviceBrokerRoutesPermission();
43695 				}
43696 				break;
43697 			case 5:
43698 				enterOuterAlt(_localctx, 5);
43699 				{
43700 				setState(6037);
43701 				serviceBrokerServicesPermission();
43702 				}
43703 				break;
43704 			}
43705 		}
43706 		catch (RecognitionException re) {
43707 			_localctx.exception = re;
43708 			_errHandler.reportError(this, re);
43709 			_errHandler.recover(this, re);
43710 		}
43711 		finally {
43712 			exitRule();
43713 		}
43714 		return _localctx;
43715 	}
43716 
43717 	public static class ServiceBrokerContractsPermissionContext extends ParserRuleContext {
43718 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43719 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43720 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43721 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43722 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
43723 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43724 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43725 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43726 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
43727 		public ServiceBrokerContractsPermissionContext(ParserRuleContext parent, int invokingState) {
43728 			super(parent, invokingState);
43729 		}
43730 		@Override public int getRuleIndex() { return RULE_serviceBrokerContractsPermission; }
43731 		@Override
43732 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43733 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerContractsPermission(this);
43734 			else return visitor.visitChildren(this);
43735 		}
43736 	}
43737 
43738 	public final ServiceBrokerContractsPermissionContext serviceBrokerContractsPermission() throws RecognitionException {
43739 		ServiceBrokerContractsPermissionContext _localctx = new ServiceBrokerContractsPermissionContext(_ctx, getState());
43740 		enterRule(_localctx, 824, RULE_serviceBrokerContractsPermission);
43741 		try {
43742 			setState(6050);
43743 			_errHandler.sync(this);
43744 			switch ( getInterpreter().adaptivePredict(_input,690,_ctx) ) {
43745 			case 1:
43746 				enterOuterAlt(_localctx, 1);
43747 				{
43748 				setState(6040);
43749 				match(CONTROL);
43750 				}
43751 				break;
43752 			case 2:
43753 				enterOuterAlt(_localctx, 2);
43754 				{
43755 				setState(6041);
43756 				match(TAKE);
43757 				setState(6042);
43758 				match(OWNERSHIP);
43759 				}
43760 				break;
43761 			case 3:
43762 				enterOuterAlt(_localctx, 3);
43763 				{
43764 				setState(6043);
43765 				match(ALTER);
43766 				}
43767 				break;
43768 			case 4:
43769 				enterOuterAlt(_localctx, 4);
43770 				{
43771 				setState(6044);
43772 				match(REFERENCES);
43773 				}
43774 				break;
43775 			case 5:
43776 				enterOuterAlt(_localctx, 5);
43777 				{
43778 				setState(6045);
43779 				match(VIEW);
43780 				setState(6046);
43781 				match(DEFINITION);
43782 				}
43783 				break;
43784 			case 6:
43785 				enterOuterAlt(_localctx, 6);
43786 				{
43787 				setState(6047);
43788 				match(ALTER);
43789 				setState(6048);
43790 				match(ANY);
43791 				setState(6049);
43792 				match(CONTRACT);
43793 				}
43794 				break;
43795 			}
43796 		}
43797 		catch (RecognitionException re) {
43798 			_localctx.exception = re;
43799 			_errHandler.reportError(this, re);
43800 			_errHandler.recover(this, re);
43801 		}
43802 		finally {
43803 			exitRule();
43804 		}
43805 		return _localctx;
43806 	}
43807 
43808 	public static class ServiceBrokerMessageTypesPermissionContext extends ParserRuleContext {
43809 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43810 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43811 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43812 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43813 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
43814 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43815 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43816 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43817 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
43818 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
43819 		public ServiceBrokerMessageTypesPermissionContext(ParserRuleContext parent, int invokingState) {
43820 			super(parent, invokingState);
43821 		}
43822 		@Override public int getRuleIndex() { return RULE_serviceBrokerMessageTypesPermission; }
43823 		@Override
43824 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43825 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerMessageTypesPermission(this);
43826 			else return visitor.visitChildren(this);
43827 		}
43828 	}
43829 
43830 	public final ServiceBrokerMessageTypesPermissionContext serviceBrokerMessageTypesPermission() throws RecognitionException {
43831 		ServiceBrokerMessageTypesPermissionContext _localctx = new ServiceBrokerMessageTypesPermissionContext(_ctx, getState());
43832 		enterRule(_localctx, 826, RULE_serviceBrokerMessageTypesPermission);
43833 		try {
43834 			setState(6063);
43835 			_errHandler.sync(this);
43836 			switch ( getInterpreter().adaptivePredict(_input,691,_ctx) ) {
43837 			case 1:
43838 				enterOuterAlt(_localctx, 1);
43839 				{
43840 				setState(6052);
43841 				match(CONTROL);
43842 				}
43843 				break;
43844 			case 2:
43845 				enterOuterAlt(_localctx, 2);
43846 				{
43847 				setState(6053);
43848 				match(TAKE);
43849 				setState(6054);
43850 				match(OWNERSHIP);
43851 				}
43852 				break;
43853 			case 3:
43854 				enterOuterAlt(_localctx, 3);
43855 				{
43856 				setState(6055);
43857 				match(ALTER);
43858 				}
43859 				break;
43860 			case 4:
43861 				enterOuterAlt(_localctx, 4);
43862 				{
43863 				setState(6056);
43864 				match(REFERENCES);
43865 				}
43866 				break;
43867 			case 5:
43868 				enterOuterAlt(_localctx, 5);
43869 				{
43870 				setState(6057);
43871 				match(VIEW);
43872 				setState(6058);
43873 				match(DEFINITION);
43874 				}
43875 				break;
43876 			case 6:
43877 				enterOuterAlt(_localctx, 6);
43878 				{
43879 				setState(6059);
43880 				match(ALTER);
43881 				setState(6060);
43882 				match(ANY);
43883 				setState(6061);
43884 				match(MESSAGE);
43885 				setState(6062);
43886 				match(TYPE);
43887 				}
43888 				break;
43889 			}
43890 		}
43891 		catch (RecognitionException re) {
43892 			_localctx.exception = re;
43893 			_errHandler.reportError(this, re);
43894 			_errHandler.recover(this, re);
43895 		}
43896 		finally {
43897 			exitRule();
43898 		}
43899 		return _localctx;
43900 	}
43901 
43902 	public static class ServiceBrokerRemoteServiceBindingsPermissionContext extends ParserRuleContext {
43903 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43904 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43905 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43906 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43907 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43908 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43909 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43910 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
43911 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
43912 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
43913 		public ServiceBrokerRemoteServiceBindingsPermissionContext(ParserRuleContext parent, int invokingState) {
43914 			super(parent, invokingState);
43915 		}
43916 		@Override public int getRuleIndex() { return RULE_serviceBrokerRemoteServiceBindingsPermission; }
43917 		@Override
43918 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43919 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerRemoteServiceBindingsPermission(this);
43920 			else return visitor.visitChildren(this);
43921 		}
43922 	}
43923 
43924 	public final ServiceBrokerRemoteServiceBindingsPermissionContext serviceBrokerRemoteServiceBindingsPermission() throws RecognitionException {
43925 		ServiceBrokerRemoteServiceBindingsPermissionContext _localctx = new ServiceBrokerRemoteServiceBindingsPermissionContext(_ctx, getState());
43926 		enterRule(_localctx, 828, RULE_serviceBrokerRemoteServiceBindingsPermission);
43927 		try {
43928 			setState(6076);
43929 			_errHandler.sync(this);
43930 			switch ( getInterpreter().adaptivePredict(_input,692,_ctx) ) {
43931 			case 1:
43932 				enterOuterAlt(_localctx, 1);
43933 				{
43934 				setState(6065);
43935 				match(CONTROL);
43936 				}
43937 				break;
43938 			case 2:
43939 				enterOuterAlt(_localctx, 2);
43940 				{
43941 				setState(6066);
43942 				match(TAKE);
43943 				setState(6067);
43944 				match(OWNERSHIP);
43945 				}
43946 				break;
43947 			case 3:
43948 				enterOuterAlt(_localctx, 3);
43949 				{
43950 				setState(6068);
43951 				match(ALTER);
43952 				}
43953 				break;
43954 			case 4:
43955 				enterOuterAlt(_localctx, 4);
43956 				{
43957 				setState(6069);
43958 				match(VIEW);
43959 				setState(6070);
43960 				match(DEFINITION);
43961 				}
43962 				break;
43963 			case 5:
43964 				enterOuterAlt(_localctx, 5);
43965 				{
43966 				setState(6071);
43967 				match(ALTER);
43968 				setState(6072);
43969 				match(ANY);
43970 				setState(6073);
43971 				match(REMOTE);
43972 				setState(6074);
43973 				match(SERVICE);
43974 				setState(6075);
43975 				match(BINDING);
43976 				}
43977 				break;
43978 			}
43979 		}
43980 		catch (RecognitionException re) {
43981 			_localctx.exception = re;
43982 			_errHandler.reportError(this, re);
43983 			_errHandler.recover(this, re);
43984 		}
43985 		finally {
43986 			exitRule();
43987 		}
43988 		return _localctx;
43989 	}
43990 
43991 	public static class ServiceBrokerRoutesPermissionContext extends ParserRuleContext {
43992 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43993 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43994 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43995 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43996 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43997 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43998 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43999 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
44000 		public ServiceBrokerRoutesPermissionContext(ParserRuleContext parent, int invokingState) {
44001 			super(parent, invokingState);
44002 		}
44003 		@Override public int getRuleIndex() { return RULE_serviceBrokerRoutesPermission; }
44004 		@Override
44005 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44006 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerRoutesPermission(this);
44007 			else return visitor.visitChildren(this);
44008 		}
44009 	}
44010 
44011 	public final ServiceBrokerRoutesPermissionContext serviceBrokerRoutesPermission() throws RecognitionException {
44012 		ServiceBrokerRoutesPermissionContext _localctx = new ServiceBrokerRoutesPermissionContext(_ctx, getState());
44013 		enterRule(_localctx, 830, RULE_serviceBrokerRoutesPermission);
44014 		try {
44015 			setState(6087);
44016 			_errHandler.sync(this);
44017 			switch ( getInterpreter().adaptivePredict(_input,693,_ctx) ) {
44018 			case 1:
44019 				enterOuterAlt(_localctx, 1);
44020 				{
44021 				setState(6078);
44022 				match(CONTROL);
44023 				}
44024 				break;
44025 			case 2:
44026 				enterOuterAlt(_localctx, 2);
44027 				{
44028 				setState(6079);
44029 				match(TAKE);
44030 				setState(6080);
44031 				match(OWNERSHIP);
44032 				}
44033 				break;
44034 			case 3:
44035 				enterOuterAlt(_localctx, 3);
44036 				{
44037 				setState(6081);
44038 				match(ALTER);
44039 				}
44040 				break;
44041 			case 4:
44042 				enterOuterAlt(_localctx, 4);
44043 				{
44044 				setState(6082);
44045 				match(VIEW);
44046 				setState(6083);
44047 				match(DEFINITION);
44048 				}
44049 				break;
44050 			case 5:
44051 				enterOuterAlt(_localctx, 5);
44052 				{
44053 				setState(6084);
44054 				match(ALTER);
44055 				setState(6085);
44056 				match(ANY);
44057 				setState(6086);
44058 				match(ROUTE);
44059 				}
44060 				break;
44061 			}
44062 		}
44063 		catch (RecognitionException re) {
44064 			_localctx.exception = re;
44065 			_errHandler.reportError(this, re);
44066 			_errHandler.recover(this, re);
44067 		}
44068 		finally {
44069 			exitRule();
44070 		}
44071 		return _localctx;
44072 	}
44073 
44074 	public static class ServiceBrokerServicesPermissionContext extends ParserRuleContext {
44075 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44076 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44077 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44078 		public TerminalNode SEND() { return getToken(SQLServerStatementParser.SEND, 0); }
44079 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44080 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44081 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44082 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44083 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
44084 		public ServiceBrokerServicesPermissionContext(ParserRuleContext parent, int invokingState) {
44085 			super(parent, invokingState);
44086 		}
44087 		@Override public int getRuleIndex() { return RULE_serviceBrokerServicesPermission; }
44088 		@Override
44089 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44090 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerServicesPermission(this);
44091 			else return visitor.visitChildren(this);
44092 		}
44093 	}
44094 
44095 	public final ServiceBrokerServicesPermissionContext serviceBrokerServicesPermission() throws RecognitionException {
44096 		ServiceBrokerServicesPermissionContext _localctx = new ServiceBrokerServicesPermissionContext(_ctx, getState());
44097 		enterRule(_localctx, 832, RULE_serviceBrokerServicesPermission);
44098 		try {
44099 			setState(6099);
44100 			_errHandler.sync(this);
44101 			switch ( getInterpreter().adaptivePredict(_input,694,_ctx) ) {
44102 			case 1:
44103 				enterOuterAlt(_localctx, 1);
44104 				{
44105 				setState(6089);
44106 				match(CONTROL);
44107 				}
44108 				break;
44109 			case 2:
44110 				enterOuterAlt(_localctx, 2);
44111 				{
44112 				setState(6090);
44113 				match(TAKE);
44114 				setState(6091);
44115 				match(OWNERSHIP);
44116 				}
44117 				break;
44118 			case 3:
44119 				enterOuterAlt(_localctx, 3);
44120 				{
44121 				setState(6092);
44122 				match(SEND);
44123 				}
44124 				break;
44125 			case 4:
44126 				enterOuterAlt(_localctx, 4);
44127 				{
44128 				setState(6093);
44129 				match(ALTER);
44130 				}
44131 				break;
44132 			case 5:
44133 				enterOuterAlt(_localctx, 5);
44134 				{
44135 				setState(6094);
44136 				match(VIEW);
44137 				setState(6095);
44138 				match(DEFINITION);
44139 				}
44140 				break;
44141 			case 6:
44142 				enterOuterAlt(_localctx, 6);
44143 				{
44144 				setState(6096);
44145 				match(ALTER);
44146 				setState(6097);
44147 				match(ANY);
44148 				setState(6098);
44149 				match(SERVICE);
44150 				}
44151 				break;
44152 			}
44153 		}
44154 		catch (RecognitionException re) {
44155 			_localctx.exception = re;
44156 			_errHandler.reportError(this, re);
44157 			_errHandler.recover(this, re);
44158 		}
44159 		finally {
44160 			exitRule();
44161 		}
44162 		return _localctx;
44163 	}
44164 
44165 	public static class EndpointPermissionContext extends ParserRuleContext {
44166 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44167 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
44168 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44169 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
44170 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44171 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44172 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44173 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44174 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44175 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
44176 		public EndpointPermissionContext(ParserRuleContext parent, int invokingState) {
44177 			super(parent, invokingState);
44178 		}
44179 		@Override public int getRuleIndex() { return RULE_endpointPermission; }
44180 		@Override
44181 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44182 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEndpointPermission(this);
44183 			else return visitor.visitChildren(this);
44184 		}
44185 	}
44186 
44187 	public final EndpointPermissionContext endpointPermission() throws RecognitionException {
44188 		EndpointPermissionContext _localctx = new EndpointPermissionContext(_ctx, getState());
44189 		enterRule(_localctx, 834, RULE_endpointPermission);
44190 		int _la;
44191 		try {
44192 			setState(6117);
44193 			_errHandler.sync(this);
44194 			switch ( getInterpreter().adaptivePredict(_input,697,_ctx) ) {
44195 			case 1:
44196 				enterOuterAlt(_localctx, 1);
44197 				{
44198 				setState(6101);
44199 				match(ALTER);
44200 				}
44201 				break;
44202 			case 2:
44203 				enterOuterAlt(_localctx, 2);
44204 				{
44205 				setState(6102);
44206 				match(CONNECT);
44207 				}
44208 				break;
44209 			case 3:
44210 				enterOuterAlt(_localctx, 3);
44211 				{
44212 				setState(6103);
44213 				match(CONTROL);
44214 				setState(6105);
44215 				_errHandler.sync(this);
44216 				_la = _input.LA(1);
44217 				if (_la==SERVER) {
44218 					{
44219 					setState(6104);
44220 					match(SERVER);
44221 					}
44222 				}
44223 
44224 				}
44225 				break;
44226 			case 4:
44227 				enterOuterAlt(_localctx, 4);
44228 				{
44229 				setState(6107);
44230 				match(TAKE);
44231 				setState(6108);
44232 				match(OWNERSHIP);
44233 				}
44234 				break;
44235 			case 5:
44236 				enterOuterAlt(_localctx, 5);
44237 				{
44238 				setState(6109);
44239 				match(VIEW);
44240 				setState(6111);
44241 				_errHandler.sync(this);
44242 				_la = _input.LA(1);
44243 				if (_la==ANY) {
44244 					{
44245 					setState(6110);
44246 					match(ANY);
44247 					}
44248 				}
44249 
44250 				setState(6113);
44251 				match(DEFINITION);
44252 				}
44253 				break;
44254 			case 6:
44255 				enterOuterAlt(_localctx, 6);
44256 				{
44257 				setState(6114);
44258 				match(ALTER);
44259 				setState(6115);
44260 				match(ANY);
44261 				setState(6116);
44262 				match(ENDPOINT);
44263 				}
44264 				break;
44265 			}
44266 		}
44267 		catch (RecognitionException re) {
44268 			_localctx.exception = re;
44269 			_errHandler.reportError(this, re);
44270 			_errHandler.recover(this, re);
44271 		}
44272 		finally {
44273 			exitRule();
44274 		}
44275 		return _localctx;
44276 	}
44277 
44278 	public static class CertificatePermissionContext extends ParserRuleContext {
44279 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44280 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44281 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44282 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44283 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44284 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44285 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44286 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44287 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
44288 		public CertificatePermissionContext(ParserRuleContext parent, int invokingState) {
44289 			super(parent, invokingState);
44290 		}
44291 		@Override public int getRuleIndex() { return RULE_certificatePermission; }
44292 		@Override
44293 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44294 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCertificatePermission(this);
44295 			else return visitor.visitChildren(this);
44296 		}
44297 	}
44298 
44299 	public final CertificatePermissionContext certificatePermission() throws RecognitionException {
44300 		CertificatePermissionContext _localctx = new CertificatePermissionContext(_ctx, getState());
44301 		enterRule(_localctx, 836, RULE_certificatePermission);
44302 		try {
44303 			setState(6129);
44304 			_errHandler.sync(this);
44305 			switch ( getInterpreter().adaptivePredict(_input,698,_ctx) ) {
44306 			case 1:
44307 				enterOuterAlt(_localctx, 1);
44308 				{
44309 				setState(6119);
44310 				match(CONTROL);
44311 				}
44312 				break;
44313 			case 2:
44314 				enterOuterAlt(_localctx, 2);
44315 				{
44316 				setState(6120);
44317 				match(TAKE);
44318 				setState(6121);
44319 				match(OWNERSHIP);
44320 				}
44321 				break;
44322 			case 3:
44323 				enterOuterAlt(_localctx, 3);
44324 				{
44325 				setState(6122);
44326 				match(ALTER);
44327 				}
44328 				break;
44329 			case 4:
44330 				enterOuterAlt(_localctx, 4);
44331 				{
44332 				setState(6123);
44333 				match(REFERENCES);
44334 				}
44335 				break;
44336 			case 5:
44337 				enterOuterAlt(_localctx, 5);
44338 				{
44339 				setState(6124);
44340 				match(VIEW);
44341 				setState(6125);
44342 				match(DEFINITION);
44343 				}
44344 				break;
44345 			case 6:
44346 				enterOuterAlt(_localctx, 6);
44347 				{
44348 				setState(6126);
44349 				match(ALTER);
44350 				setState(6127);
44351 				match(ANY);
44352 				setState(6128);
44353 				match(CERTIFICATE);
44354 				}
44355 				break;
44356 			}
44357 		}
44358 		catch (RecognitionException re) {
44359 			_localctx.exception = re;
44360 			_errHandler.reportError(this, re);
44361 			_errHandler.recover(this, re);
44362 		}
44363 		finally {
44364 			exitRule();
44365 		}
44366 		return _localctx;
44367 	}
44368 
44369 	public static class SymmetricKeyPermissionContext extends ParserRuleContext {
44370 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44371 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44372 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44373 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44374 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44375 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44376 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44377 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44378 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
44379 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
44380 		public SymmetricKeyPermissionContext(ParserRuleContext parent, int invokingState) {
44381 			super(parent, invokingState);
44382 		}
44383 		@Override public int getRuleIndex() { return RULE_symmetricKeyPermission; }
44384 		@Override
44385 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44386 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSymmetricKeyPermission(this);
44387 			else return visitor.visitChildren(this);
44388 		}
44389 	}
44390 
44391 	public final SymmetricKeyPermissionContext symmetricKeyPermission() throws RecognitionException {
44392 		SymmetricKeyPermissionContext _localctx = new SymmetricKeyPermissionContext(_ctx, getState());
44393 		enterRule(_localctx, 838, RULE_symmetricKeyPermission);
44394 		try {
44395 			setState(6142);
44396 			_errHandler.sync(this);
44397 			switch ( getInterpreter().adaptivePredict(_input,699,_ctx) ) {
44398 			case 1:
44399 				enterOuterAlt(_localctx, 1);
44400 				{
44401 				setState(6131);
44402 				match(ALTER);
44403 				}
44404 				break;
44405 			case 2:
44406 				enterOuterAlt(_localctx, 2);
44407 				{
44408 				setState(6132);
44409 				match(CONTROL);
44410 				}
44411 				break;
44412 			case 3:
44413 				enterOuterAlt(_localctx, 3);
44414 				{
44415 				setState(6133);
44416 				match(REFERENCES);
44417 				}
44418 				break;
44419 			case 4:
44420 				enterOuterAlt(_localctx, 4);
44421 				{
44422 				setState(6134);
44423 				match(TAKE);
44424 				setState(6135);
44425 				match(OWNERSHIP);
44426 				}
44427 				break;
44428 			case 5:
44429 				enterOuterAlt(_localctx, 5);
44430 				{
44431 				setState(6136);
44432 				match(VIEW);
44433 				setState(6137);
44434 				match(DEFINITION);
44435 				}
44436 				break;
44437 			case 6:
44438 				enterOuterAlt(_localctx, 6);
44439 				{
44440 				setState(6138);
44441 				match(ALTER);
44442 				setState(6139);
44443 				match(ANY);
44444 				setState(6140);
44445 				match(SYMMETRIC);
44446 				setState(6141);
44447 				match(KEY);
44448 				}
44449 				break;
44450 			}
44451 		}
44452 		catch (RecognitionException re) {
44453 			_localctx.exception = re;
44454 			_errHandler.reportError(this, re);
44455 			_errHandler.recover(this, re);
44456 		}
44457 		finally {
44458 			exitRule();
44459 		}
44460 		return _localctx;
44461 	}
44462 
44463 	public static class AsymmetricKeyPermissionContext extends ParserRuleContext {
44464 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44465 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44466 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44467 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44468 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44469 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44470 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44471 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44472 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
44473 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
44474 		public AsymmetricKeyPermissionContext(ParserRuleContext parent, int invokingState) {
44475 			super(parent, invokingState);
44476 		}
44477 		@Override public int getRuleIndex() { return RULE_asymmetricKeyPermission; }
44478 		@Override
44479 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44480 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAsymmetricKeyPermission(this);
44481 			else return visitor.visitChildren(this);
44482 		}
44483 	}
44484 
44485 	public final AsymmetricKeyPermissionContext asymmetricKeyPermission() throws RecognitionException {
44486 		AsymmetricKeyPermissionContext _localctx = new AsymmetricKeyPermissionContext(_ctx, getState());
44487 		enterRule(_localctx, 840, RULE_asymmetricKeyPermission);
44488 		try {
44489 			setState(6155);
44490 			_errHandler.sync(this);
44491 			switch ( getInterpreter().adaptivePredict(_input,700,_ctx) ) {
44492 			case 1:
44493 				enterOuterAlt(_localctx, 1);
44494 				{
44495 				setState(6144);
44496 				match(CONTROL);
44497 				}
44498 				break;
44499 			case 2:
44500 				enterOuterAlt(_localctx, 2);
44501 				{
44502 				setState(6145);
44503 				match(TAKE);
44504 				setState(6146);
44505 				match(OWNERSHIP);
44506 				}
44507 				break;
44508 			case 3:
44509 				enterOuterAlt(_localctx, 3);
44510 				{
44511 				setState(6147);
44512 				match(ALTER);
44513 				}
44514 				break;
44515 			case 4:
44516 				enterOuterAlt(_localctx, 4);
44517 				{
44518 				setState(6148);
44519 				match(REFERENCES);
44520 				}
44521 				break;
44522 			case 5:
44523 				enterOuterAlt(_localctx, 5);
44524 				{
44525 				setState(6149);
44526 				match(VIEW);
44527 				setState(6150);
44528 				match(DEFINITION);
44529 				}
44530 				break;
44531 			case 6:
44532 				enterOuterAlt(_localctx, 6);
44533 				{
44534 				setState(6151);
44535 				match(ALTER);
44536 				setState(6152);
44537 				match(ANY);
44538 				setState(6153);
44539 				match(ASYMMETRIC);
44540 				setState(6154);
44541 				match(KEY);
44542 				}
44543 				break;
44544 			}
44545 		}
44546 		catch (RecognitionException re) {
44547 			_localctx.exception = re;
44548 			_errHandler.reportError(this, re);
44549 			_errHandler.recover(this, re);
44550 		}
44551 		finally {
44552 			exitRule();
44553 		}
44554 		return _localctx;
44555 	}
44556 
44557 	public static class AssemblyPermissionContext extends ParserRuleContext {
44558 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44559 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44560 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44561 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44562 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44563 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44564 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44565 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44566 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
44567 		public AssemblyPermissionContext(ParserRuleContext parent, int invokingState) {
44568 			super(parent, invokingState);
44569 		}
44570 		@Override public int getRuleIndex() { return RULE_assemblyPermission; }
44571 		@Override
44572 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44573 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssemblyPermission(this);
44574 			else return visitor.visitChildren(this);
44575 		}
44576 	}
44577 
44578 	public final AssemblyPermissionContext assemblyPermission() throws RecognitionException {
44579 		AssemblyPermissionContext _localctx = new AssemblyPermissionContext(_ctx, getState());
44580 		enterRule(_localctx, 842, RULE_assemblyPermission);
44581 		try {
44582 			setState(6167);
44583 			_errHandler.sync(this);
44584 			switch ( getInterpreter().adaptivePredict(_input,701,_ctx) ) {
44585 			case 1:
44586 				enterOuterAlt(_localctx, 1);
44587 				{
44588 				setState(6157);
44589 				match(CONTROL);
44590 				}
44591 				break;
44592 			case 2:
44593 				enterOuterAlt(_localctx, 2);
44594 				{
44595 				setState(6158);
44596 				match(TAKE);
44597 				setState(6159);
44598 				match(OWNERSHIP);
44599 				}
44600 				break;
44601 			case 3:
44602 				enterOuterAlt(_localctx, 3);
44603 				{
44604 				setState(6160);
44605 				match(ALTER);
44606 				}
44607 				break;
44608 			case 4:
44609 				enterOuterAlt(_localctx, 4);
44610 				{
44611 				setState(6161);
44612 				match(REFERENCES);
44613 				}
44614 				break;
44615 			case 5:
44616 				enterOuterAlt(_localctx, 5);
44617 				{
44618 				setState(6162);
44619 				match(VIEW);
44620 				setState(6163);
44621 				match(DEFINITION);
44622 				}
44623 				break;
44624 			case 6:
44625 				enterOuterAlt(_localctx, 6);
44626 				{
44627 				setState(6164);
44628 				match(ALTER);
44629 				setState(6165);
44630 				match(ANY);
44631 				setState(6166);
44632 				match(ASSEMBLY);
44633 				}
44634 				break;
44635 			}
44636 		}
44637 		catch (RecognitionException re) {
44638 			_localctx.exception = re;
44639 			_errHandler.reportError(this, re);
44640 			_errHandler.recover(this, re);
44641 		}
44642 		finally {
44643 			exitRule();
44644 		}
44645 		return _localctx;
44646 	}
44647 
44648 	public static class AvailabilityGroupPermissionContext extends ParserRuleContext {
44649 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44650 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
44651 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44652 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
44653 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44654 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44655 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44656 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44657 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44658 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
44659 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
44660 		public AvailabilityGroupPermissionContext(ParserRuleContext parent, int invokingState) {
44661 			super(parent, invokingState);
44662 		}
44663 		@Override public int getRuleIndex() { return RULE_availabilityGroupPermission; }
44664 		@Override
44665 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44666 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAvailabilityGroupPermission(this);
44667 			else return visitor.visitChildren(this);
44668 		}
44669 	}
44670 
44671 	public final AvailabilityGroupPermissionContext availabilityGroupPermission() throws RecognitionException {
44672 		AvailabilityGroupPermissionContext _localctx = new AvailabilityGroupPermissionContext(_ctx, getState());
44673 		enterRule(_localctx, 844, RULE_availabilityGroupPermission);
44674 		int _la;
44675 		try {
44676 			setState(6186);
44677 			_errHandler.sync(this);
44678 			switch ( getInterpreter().adaptivePredict(_input,704,_ctx) ) {
44679 			case 1:
44680 				enterOuterAlt(_localctx, 1);
44681 				{
44682 				setState(6169);
44683 				match(ALTER);
44684 				}
44685 				break;
44686 			case 2:
44687 				enterOuterAlt(_localctx, 2);
44688 				{
44689 				setState(6170);
44690 				match(CONNECT);
44691 				}
44692 				break;
44693 			case 3:
44694 				enterOuterAlt(_localctx, 3);
44695 				{
44696 				setState(6171);
44697 				match(CONTROL);
44698 				setState(6173);
44699 				_errHandler.sync(this);
44700 				_la = _input.LA(1);
44701 				if (_la==SERVER) {
44702 					{
44703 					setState(6172);
44704 					match(SERVER);
44705 					}
44706 				}
44707 
44708 				}
44709 				break;
44710 			case 4:
44711 				enterOuterAlt(_localctx, 4);
44712 				{
44713 				setState(6175);
44714 				match(TAKE);
44715 				setState(6176);
44716 				match(OWNERSHIP);
44717 				}
44718 				break;
44719 			case 5:
44720 				enterOuterAlt(_localctx, 5);
44721 				{
44722 				setState(6177);
44723 				match(VIEW);
44724 				setState(6179);
44725 				_errHandler.sync(this);
44726 				_la = _input.LA(1);
44727 				if (_la==ANY) {
44728 					{
44729 					setState(6178);
44730 					match(ANY);
44731 					}
44732 				}
44733 
44734 				setState(6181);
44735 				match(DEFINITION);
44736 				}
44737 				break;
44738 			case 6:
44739 				enterOuterAlt(_localctx, 6);
44740 				{
44741 				setState(6182);
44742 				match(ALTER);
44743 				setState(6183);
44744 				match(ANY);
44745 				setState(6184);
44746 				match(AVAILABILITY);
44747 				setState(6185);
44748 				match(GROUP);
44749 				}
44750 				break;
44751 			}
44752 		}
44753 		catch (RecognitionException re) {
44754 			_localctx.exception = re;
44755 			_errHandler.reportError(this, re);
44756 			_errHandler.recover(this, re);
44757 		}
44758 		finally {
44759 			exitRule();
44760 		}
44761 		return _localctx;
44762 	}
44763 
44764 	public static class FullTextPermissionContext extends ParserRuleContext {
44765 		public FullTextCatalogPermissionContext fullTextCatalogPermission() {
44766 			return getRuleContext(FullTextCatalogPermissionContext.class,0);
44767 		}
44768 		public FullTextStoplistPermissionContext fullTextStoplistPermission() {
44769 			return getRuleContext(FullTextStoplistPermissionContext.class,0);
44770 		}
44771 		public FullTextPermissionContext(ParserRuleContext parent, int invokingState) {
44772 			super(parent, invokingState);
44773 		}
44774 		@Override public int getRuleIndex() { return RULE_fullTextPermission; }
44775 		@Override
44776 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44777 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextPermission(this);
44778 			else return visitor.visitChildren(this);
44779 		}
44780 	}
44781 
44782 	public final FullTextPermissionContext fullTextPermission() throws RecognitionException {
44783 		FullTextPermissionContext _localctx = new FullTextPermissionContext(_ctx, getState());
44784 		enterRule(_localctx, 846, RULE_fullTextPermission);
44785 		try {
44786 			setState(6190);
44787 			_errHandler.sync(this);
44788 			switch ( getInterpreter().adaptivePredict(_input,705,_ctx) ) {
44789 			case 1:
44790 				enterOuterAlt(_localctx, 1);
44791 				{
44792 				setState(6188);
44793 				fullTextCatalogPermission();
44794 				}
44795 				break;
44796 			case 2:
44797 				enterOuterAlt(_localctx, 2);
44798 				{
44799 				setState(6189);
44800 				fullTextStoplistPermission();
44801 				}
44802 				break;
44803 			}
44804 		}
44805 		catch (RecognitionException re) {
44806 			_localctx.exception = re;
44807 			_errHandler.reportError(this, re);
44808 			_errHandler.recover(this, re);
44809 		}
44810 		finally {
44811 			exitRule();
44812 		}
44813 		return _localctx;
44814 	}
44815 
44816 	public static class FullTextCatalogPermissionContext extends ParserRuleContext {
44817 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44818 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44819 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44820 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44821 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44822 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44823 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44824 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44825 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
44826 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
44827 		public FullTextCatalogPermissionContext(ParserRuleContext parent, int invokingState) {
44828 			super(parent, invokingState);
44829 		}
44830 		@Override public int getRuleIndex() { return RULE_fullTextCatalogPermission; }
44831 		@Override
44832 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44833 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextCatalogPermission(this);
44834 			else return visitor.visitChildren(this);
44835 		}
44836 	}
44837 
44838 	public final FullTextCatalogPermissionContext fullTextCatalogPermission() throws RecognitionException {
44839 		FullTextCatalogPermissionContext _localctx = new FullTextCatalogPermissionContext(_ctx, getState());
44840 		enterRule(_localctx, 848, RULE_fullTextCatalogPermission);
44841 		try {
44842 			setState(6203);
44843 			_errHandler.sync(this);
44844 			switch ( getInterpreter().adaptivePredict(_input,706,_ctx) ) {
44845 			case 1:
44846 				enterOuterAlt(_localctx, 1);
44847 				{
44848 				setState(6192);
44849 				match(CONTROL);
44850 				}
44851 				break;
44852 			case 2:
44853 				enterOuterAlt(_localctx, 2);
44854 				{
44855 				setState(6193);
44856 				match(TAKE);
44857 				setState(6194);
44858 				match(OWNERSHIP);
44859 				}
44860 				break;
44861 			case 3:
44862 				enterOuterAlt(_localctx, 3);
44863 				{
44864 				setState(6195);
44865 				match(ALTER);
44866 				}
44867 				break;
44868 			case 4:
44869 				enterOuterAlt(_localctx, 4);
44870 				{
44871 				setState(6196);
44872 				match(REFERENCES);
44873 				}
44874 				break;
44875 			case 5:
44876 				enterOuterAlt(_localctx, 5);
44877 				{
44878 				setState(6197);
44879 				match(VIEW);
44880 				setState(6198);
44881 				match(DEFINITION);
44882 				}
44883 				break;
44884 			case 6:
44885 				enterOuterAlt(_localctx, 6);
44886 				{
44887 				setState(6199);
44888 				match(ALTER);
44889 				setState(6200);
44890 				match(ANY);
44891 				setState(6201);
44892 				match(FULLTEXT);
44893 				setState(6202);
44894 				match(CATALOG);
44895 				}
44896 				break;
44897 			}
44898 		}
44899 		catch (RecognitionException re) {
44900 			_localctx.exception = re;
44901 			_errHandler.reportError(this, re);
44902 			_errHandler.recover(this, re);
44903 		}
44904 		finally {
44905 			exitRule();
44906 		}
44907 		return _localctx;
44908 	}
44909 
44910 	public static class FullTextStoplistPermissionContext extends ParserRuleContext {
44911 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44912 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44913 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44914 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44915 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44916 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44917 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44918 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44919 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
44920 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
44921 		public FullTextStoplistPermissionContext(ParserRuleContext parent, int invokingState) {
44922 			super(parent, invokingState);
44923 		}
44924 		@Override public int getRuleIndex() { return RULE_fullTextStoplistPermission; }
44925 		@Override
44926 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44927 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextStoplistPermission(this);
44928 			else return visitor.visitChildren(this);
44929 		}
44930 	}
44931 
44932 	public final FullTextStoplistPermissionContext fullTextStoplistPermission() throws RecognitionException {
44933 		FullTextStoplistPermissionContext _localctx = new FullTextStoplistPermissionContext(_ctx, getState());
44934 		enterRule(_localctx, 850, RULE_fullTextStoplistPermission);
44935 		try {
44936 			setState(6216);
44937 			_errHandler.sync(this);
44938 			switch ( getInterpreter().adaptivePredict(_input,707,_ctx) ) {
44939 			case 1:
44940 				enterOuterAlt(_localctx, 1);
44941 				{
44942 				setState(6205);
44943 				match(ALTER);
44944 				}
44945 				break;
44946 			case 2:
44947 				enterOuterAlt(_localctx, 2);
44948 				{
44949 				setState(6206);
44950 				match(CONTROL);
44951 				}
44952 				break;
44953 			case 3:
44954 				enterOuterAlt(_localctx, 3);
44955 				{
44956 				setState(6207);
44957 				match(REFERENCES);
44958 				}
44959 				break;
44960 			case 4:
44961 				enterOuterAlt(_localctx, 4);
44962 				{
44963 				setState(6208);
44964 				match(TAKE);
44965 				setState(6209);
44966 				match(OWNERSHIP);
44967 				}
44968 				break;
44969 			case 5:
44970 				enterOuterAlt(_localctx, 5);
44971 				{
44972 				setState(6210);
44973 				match(VIEW);
44974 				setState(6211);
44975 				match(DEFINITION);
44976 				}
44977 				break;
44978 			case 6:
44979 				enterOuterAlt(_localctx, 6);
44980 				{
44981 				setState(6212);
44982 				match(ALTER);
44983 				setState(6213);
44984 				match(ANY);
44985 				setState(6214);
44986 				match(FULLTEXT);
44987 				setState(6215);
44988 				match(CATALOG);
44989 				}
44990 				break;
44991 			}
44992 		}
44993 		catch (RecognitionException re) {
44994 			_localctx.exception = re;
44995 			_errHandler.reportError(this, re);
44996 			_errHandler.recover(this, re);
44997 		}
44998 		finally {
44999 			exitRule();
45000 		}
45001 		return _localctx;
45002 	}
45003 
45004 	public static class TypePermissionContext extends ParserRuleContext {
45005 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45006 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
45007 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45008 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45009 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45010 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45011 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45012 		public TypePermissionContext(ParserRuleContext parent, int invokingState) {
45013 			super(parent, invokingState);
45014 		}
45015 		@Override public int getRuleIndex() { return RULE_typePermission; }
45016 		@Override
45017 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45018 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTypePermission(this);
45019 			else return visitor.visitChildren(this);
45020 		}
45021 	}
45022 
45023 	public final TypePermissionContext typePermission() throws RecognitionException {
45024 		TypePermissionContext _localctx = new TypePermissionContext(_ctx, getState());
45025 		enterRule(_localctx, 852, RULE_typePermission);
45026 		try {
45027 			setState(6225);
45028 			_errHandler.sync(this);
45029 			switch (_input.LA(1)) {
45030 			case CONTROL:
45031 				enterOuterAlt(_localctx, 1);
45032 				{
45033 				setState(6218);
45034 				match(CONTROL);
45035 				}
45036 				break;
45037 			case EXECUTE:
45038 				enterOuterAlt(_localctx, 2);
45039 				{
45040 				setState(6219);
45041 				match(EXECUTE);
45042 				}
45043 				break;
45044 			case REFERENCES:
45045 				enterOuterAlt(_localctx, 3);
45046 				{
45047 				setState(6220);
45048 				match(REFERENCES);
45049 				}
45050 				break;
45051 			case TAKE:
45052 				enterOuterAlt(_localctx, 4);
45053 				{
45054 				setState(6221);
45055 				match(TAKE);
45056 				setState(6222);
45057 				match(OWNERSHIP);
45058 				}
45059 				break;
45060 			case VIEW:
45061 				enterOuterAlt(_localctx, 5);
45062 				{
45063 				setState(6223);
45064 				match(VIEW);
45065 				setState(6224);
45066 				match(DEFINITION);
45067 				}
45068 				break;
45069 			default:
45070 				throw new NoViableAltException(this);
45071 			}
45072 		}
45073 		catch (RecognitionException re) {
45074 			_localctx.exception = re;
45075 			_errHandler.reportError(this, re);
45076 			_errHandler.recover(this, re);
45077 		}
45078 		finally {
45079 			exitRule();
45080 		}
45081 		return _localctx;
45082 	}
45083 
45084 	public static class XmlSchemaCollectionPermissionContext extends ParserRuleContext {
45085 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45086 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45087 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
45088 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45089 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45090 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45091 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45092 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45093 		public XmlSchemaCollectionPermissionContext(ParserRuleContext parent, int invokingState) {
45094 			super(parent, invokingState);
45095 		}
45096 		@Override public int getRuleIndex() { return RULE_xmlSchemaCollectionPermission; }
45097 		@Override
45098 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45099 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlSchemaCollectionPermission(this);
45100 			else return visitor.visitChildren(this);
45101 		}
45102 	}
45103 
45104 	public final XmlSchemaCollectionPermissionContext xmlSchemaCollectionPermission() throws RecognitionException {
45105 		XmlSchemaCollectionPermissionContext _localctx = new XmlSchemaCollectionPermissionContext(_ctx, getState());
45106 		enterRule(_localctx, 854, RULE_xmlSchemaCollectionPermission);
45107 		try {
45108 			setState(6235);
45109 			_errHandler.sync(this);
45110 			switch (_input.LA(1)) {
45111 			case ALTER:
45112 				enterOuterAlt(_localctx, 1);
45113 				{
45114 				setState(6227);
45115 				match(ALTER);
45116 				}
45117 				break;
45118 			case CONTROL:
45119 				enterOuterAlt(_localctx, 2);
45120 				{
45121 				setState(6228);
45122 				match(CONTROL);
45123 				}
45124 				break;
45125 			case EXECUTE:
45126 				enterOuterAlt(_localctx, 3);
45127 				{
45128 				setState(6229);
45129 				match(EXECUTE);
45130 				}
45131 				break;
45132 			case REFERENCES:
45133 				enterOuterAlt(_localctx, 4);
45134 				{
45135 				setState(6230);
45136 				match(REFERENCES);
45137 				}
45138 				break;
45139 			case TAKE:
45140 				enterOuterAlt(_localctx, 5);
45141 				{
45142 				setState(6231);
45143 				match(TAKE);
45144 				setState(6232);
45145 				match(OWNERSHIP);
45146 				}
45147 				break;
45148 			case VIEW:
45149 				enterOuterAlt(_localctx, 6);
45150 				{
45151 				setState(6233);
45152 				match(VIEW);
45153 				setState(6234);
45154 				match(DEFINITION);
45155 				}
45156 				break;
45157 			default:
45158 				throw new NoViableAltException(this);
45159 			}
45160 		}
45161 		catch (RecognitionException re) {
45162 			_localctx.exception = re;
45163 			_errHandler.reportError(this, re);
45164 			_errHandler.recover(this, re);
45165 		}
45166 		finally {
45167 			exitRule();
45168 		}
45169 		return _localctx;
45170 	}
45171 
45172 	public static class SystemObjectPermissionContext extends ParserRuleContext {
45173 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
45174 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
45175 		public SystemObjectPermissionContext(ParserRuleContext parent, int invokingState) {
45176 			super(parent, invokingState);
45177 		}
45178 		@Override public int getRuleIndex() { return RULE_systemObjectPermission; }
45179 		@Override
45180 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45181 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSystemObjectPermission(this);
45182 			else return visitor.visitChildren(this);
45183 		}
45184 	}
45185 
45186 	public final SystemObjectPermissionContext systemObjectPermission() throws RecognitionException {
45187 		SystemObjectPermissionContext _localctx = new SystemObjectPermissionContext(_ctx, getState());
45188 		enterRule(_localctx, 856, RULE_systemObjectPermission);
45189 		int _la;
45190 		try {
45191 			enterOuterAlt(_localctx, 1);
45192 			{
45193 			setState(6237);
45194 			_la = _input.LA(1);
45195 			if ( !(_la==SELECT || _la==EXECUTE) ) {
45196 			_errHandler.recoverInline(this);
45197 			}
45198 			else {
45199 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
45200 				_errHandler.reportMatch(this);
45201 				consume();
45202 			}
45203 			}
45204 		}
45205 		catch (RecognitionException re) {
45206 			_localctx.exception = re;
45207 			_errHandler.reportError(this, re);
45208 			_errHandler.recover(this, re);
45209 		}
45210 		finally {
45211 			exitRule();
45212 		}
45213 		return _localctx;
45214 	}
45215 
45216 	public static class Class_Context extends ParserRuleContext {
45217 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
45218 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
45219 		public TerminalNode COLON_(int i) {
45220 			return getToken(SQLServerStatementParser.COLON_, i);
45221 		}
45222 		public Class_Context(ParserRuleContext parent, int invokingState) {
45223 			super(parent, invokingState);
45224 		}
45225 		@Override public int getRuleIndex() { return RULE_class_; }
45226 		@Override
45227 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45228 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClass_(this);
45229 			else return visitor.visitChildren(this);
45230 		}
45231 	}
45232 
45233 	public final Class_Context class_() throws RecognitionException {
45234 		Class_Context _localctx = new Class_Context(_ctx, getState());
45235 		enterRule(_localctx, 858, RULE_class_);
45236 		try {
45237 			enterOuterAlt(_localctx, 1);
45238 			{
45239 			setState(6239);
45240 			match(IDENTIFIER_);
45241 			setState(6240);
45242 			match(COLON_);
45243 			setState(6241);
45244 			match(COLON_);
45245 			}
45246 		}
45247 		catch (RecognitionException re) {
45248 			_localctx.exception = re;
45249 			_errHandler.reportError(this, re);
45250 			_errHandler.recover(this, re);
45251 		}
45252 		finally {
45253 			exitRule();
45254 		}
45255 		return _localctx;
45256 	}
45257 
45258 	public static class ClassItemContext extends ParserRuleContext {
45259 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
45260 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
45261 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
45262 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
45263 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
45264 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
45265 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
45266 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
45267 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
45268 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
45269 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
45270 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
45271 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
45272 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
45273 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
45274 		public TerminalNode STOPLIST() { return getToken(SQLServerStatementParser.STOPLIST, 0); }
45275 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
45276 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
45277 		public TerminalNode SEARCH() { return getToken(SQLServerStatementParser.SEARCH, 0); }
45278 		public TerminalNode PROPERTY() { return getToken(SQLServerStatementParser.PROPERTY, 0); }
45279 		public TerminalNode LIST() { return getToken(SQLServerStatementParser.LIST, 0); }
45280 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
45281 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
45282 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
45283 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
45284 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
45285 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
45286 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
45287 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
45288 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
45289 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
45290 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
45291 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
45292 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
45293 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
45294 		public ClassItemContext(ParserRuleContext parent, int invokingState) {
45295 			super(parent, invokingState);
45296 		}
45297 		@Override public int getRuleIndex() { return RULE_classItem; }
45298 		@Override
45299 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45300 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassItem(this);
45301 			else return visitor.visitChildren(this);
45302 		}
45303 	}
45304 
45305 	public final ClassItemContext classItem() throws RecognitionException {
45306 		ClassItemContext _localctx = new ClassItemContext(_ctx, getState());
45307 		enterRule(_localctx, 860, RULE_classItem);
45308 		int _la;
45309 		try {
45310 			setState(6283);
45311 			_errHandler.sync(this);
45312 			switch (_input.LA(1)) {
45313 			case ASSEMBLY:
45314 				enterOuterAlt(_localctx, 1);
45315 				{
45316 				setState(6243);
45317 				match(ASSEMBLY);
45318 				}
45319 				break;
45320 			case ASYMMETRIC:
45321 				enterOuterAlt(_localctx, 2);
45322 				{
45323 				setState(6244);
45324 				match(ASYMMETRIC);
45325 				setState(6245);
45326 				match(KEY);
45327 				}
45328 				break;
45329 			case AVAILABILITY:
45330 				enterOuterAlt(_localctx, 3);
45331 				{
45332 				setState(6246);
45333 				match(AVAILABILITY);
45334 				setState(6247);
45335 				match(GROUP);
45336 				}
45337 				break;
45338 			case CERTIFICATE:
45339 				enterOuterAlt(_localctx, 4);
45340 				{
45341 				setState(6248);
45342 				match(CERTIFICATE);
45343 				}
45344 				break;
45345 			case USER:
45346 				enterOuterAlt(_localctx, 5);
45347 				{
45348 				setState(6249);
45349 				match(USER);
45350 				}
45351 				break;
45352 			case ROLE:
45353 				enterOuterAlt(_localctx, 6);
45354 				{
45355 				setState(6250);
45356 				match(ROLE);
45357 				}
45358 				break;
45359 			case APPLICATION:
45360 				enterOuterAlt(_localctx, 7);
45361 				{
45362 				setState(6251);
45363 				match(APPLICATION);
45364 				setState(6252);
45365 				match(ROLE);
45366 				}
45367 				break;
45368 			case DATABASE:
45369 				enterOuterAlt(_localctx, 8);
45370 				{
45371 				setState(6253);
45372 				match(DATABASE);
45373 				setState(6254);
45374 				match(SCOPED);
45375 				setState(6255);
45376 				match(CREDENTIAL);
45377 				}
45378 				break;
45379 			case ENDPOINT:
45380 				enterOuterAlt(_localctx, 9);
45381 				{
45382 				setState(6256);
45383 				match(ENDPOINT);
45384 				}
45385 				break;
45386 			case FULLTEXT:
45387 				enterOuterAlt(_localctx, 10);
45388 				{
45389 				setState(6257);
45390 				match(FULLTEXT);
45391 				setState(6258);
45392 				_la = _input.LA(1);
45393 				if ( !(_la==CATALOG || _la==STOPLIST) ) {
45394 				_errHandler.recoverInline(this);
45395 				}
45396 				else {
45397 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
45398 					_errHandler.reportMatch(this);
45399 					consume();
45400 				}
45401 				}
45402 				break;
45403 			case OBJECT:
45404 				enterOuterAlt(_localctx, 11);
45405 				{
45406 				setState(6259);
45407 				match(OBJECT);
45408 				}
45409 				break;
45410 			case SCHEMA:
45411 				enterOuterAlt(_localctx, 12);
45412 				{
45413 				setState(6260);
45414 				match(SCHEMA);
45415 				}
45416 				break;
45417 			case SEARCH:
45418 				enterOuterAlt(_localctx, 13);
45419 				{
45420 				setState(6261);
45421 				match(SEARCH);
45422 				setState(6262);
45423 				match(PROPERTY);
45424 				setState(6263);
45425 				match(LIST);
45426 				}
45427 				break;
45428 			case LOGIN:
45429 				enterOuterAlt(_localctx, 14);
45430 				{
45431 				setState(6264);
45432 				match(LOGIN);
45433 				}
45434 				break;
45435 			case SERVER:
45436 				enterOuterAlt(_localctx, 15);
45437 				{
45438 				setState(6265);
45439 				match(SERVER);
45440 				setState(6266);
45441 				match(ROLE);
45442 				}
45443 				break;
45444 			case CONTRACT:
45445 				enterOuterAlt(_localctx, 16);
45446 				{
45447 				setState(6267);
45448 				match(CONTRACT);
45449 				}
45450 				break;
45451 			case MESSAGE:
45452 				enterOuterAlt(_localctx, 17);
45453 				{
45454 				setState(6268);
45455 				match(MESSAGE);
45456 				setState(6269);
45457 				match(TYPE);
45458 				}
45459 				break;
45460 			case REMOTE:
45461 				enterOuterAlt(_localctx, 18);
45462 				{
45463 				setState(6270);
45464 				match(REMOTE);
45465 				setState(6271);
45466 				match(SERVICE);
45467 				setState(6272);
45468 				match(BINDING);
45469 				}
45470 				break;
45471 			case ROUTE:
45472 				enterOuterAlt(_localctx, 19);
45473 				{
45474 				setState(6273);
45475 				match(ROUTE);
45476 				}
45477 				break;
45478 			case SERVICE:
45479 				enterOuterAlt(_localctx, 20);
45480 				{
45481 				setState(6274);
45482 				match(SERVICE);
45483 				}
45484 				break;
45485 			case SYMMETRIC:
45486 				enterOuterAlt(_localctx, 21);
45487 				{
45488 				setState(6275);
45489 				match(SYMMETRIC);
45490 				setState(6276);
45491 				match(KEY);
45492 				}
45493 				break;
45494 			case SELECT:
45495 				enterOuterAlt(_localctx, 22);
45496 				{
45497 				setState(6277);
45498 				match(SELECT);
45499 				}
45500 				break;
45501 			case EXECUTE:
45502 				enterOuterAlt(_localctx, 23);
45503 				{
45504 				setState(6278);
45505 				match(EXECUTE);
45506 				}
45507 				break;
45508 			case TYPE:
45509 				enterOuterAlt(_localctx, 24);
45510 				{
45511 				setState(6279);
45512 				match(TYPE);
45513 				}
45514 				break;
45515 			case XML:
45516 				enterOuterAlt(_localctx, 25);
45517 				{
45518 				setState(6280);
45519 				match(XML);
45520 				setState(6281);
45521 				match(SCHEMA);
45522 				setState(6282);
45523 				match(COLLECTION);
45524 				}
45525 				break;
45526 			default:
45527 				throw new NoViableAltException(this);
45528 			}
45529 		}
45530 		catch (RecognitionException re) {
45531 			_localctx.exception = re;
45532 			_errHandler.reportError(this, re);
45533 			_errHandler.recover(this, re);
45534 		}
45535 		finally {
45536 			exitRule();
45537 		}
45538 		return _localctx;
45539 	}
45540 
45541 	public static class ClassTypeContext extends ParserRuleContext {
45542 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
45543 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
45544 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
45545 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
45546 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
45547 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
45548 		public ClassTypeContext(ParserRuleContext parent, int invokingState) {
45549 			super(parent, invokingState);
45550 		}
45551 		@Override public int getRuleIndex() { return RULE_classType; }
45552 		@Override
45553 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45554 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassType(this);
45555 			else return visitor.visitChildren(this);
45556 		}
45557 	}
45558 
45559 	public final ClassTypeContext classType() throws RecognitionException {
45560 		ClassTypeContext _localctx = new ClassTypeContext(_ctx, getState());
45561 		enterRule(_localctx, 862, RULE_classType);
45562 		int _la;
45563 		try {
45564 			enterOuterAlt(_localctx, 1);
45565 			{
45566 			setState(6285);
45567 			_la = _input.LA(1);
45568 			if ( !(_la==SCHEMA || ((((_la - 202)) & ~0x3f) == 0 && ((1L << (_la - 202)) & ((1L << (DATABASE - 202)) | (1L << (USER - 202)) | (1L << (ROLE - 202)))) != 0) || _la==LOGIN || _la==OBJECT) ) {
45569 			_errHandler.recoverInline(this);
45570 			}
45571 			else {
45572 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
45573 				_errHandler.reportMatch(this);
45574 				consume();
45575 			}
45576 			}
45577 		}
45578 		catch (RecognitionException re) {
45579 			_localctx.exception = re;
45580 			_errHandler.reportError(this, re);
45581 			_errHandler.recover(this, re);
45582 		}
45583 		finally {
45584 			exitRule();
45585 		}
45586 		return _localctx;
45587 	}
45588 
45589 	public static class RoleClauseContext extends ParserRuleContext {
45590 		public IgnoredIdentifiersContext ignoredIdentifiers() {
45591 			return getRuleContext(IgnoredIdentifiersContext.class,0);
45592 		}
45593 		public RoleClauseContext(ParserRuleContext parent, int invokingState) {
45594 			super(parent, invokingState);
45595 		}
45596 		@Override public int getRuleIndex() { return RULE_roleClause; }
45597 		@Override
45598 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45599 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRoleClause(this);
45600 			else return visitor.visitChildren(this);
45601 		}
45602 	}
45603 
45604 	public final RoleClauseContext roleClause() throws RecognitionException {
45605 		RoleClauseContext _localctx = new RoleClauseContext(_ctx, getState());
45606 		enterRule(_localctx, 864, RULE_roleClause);
45607 		try {
45608 			enterOuterAlt(_localctx, 1);
45609 			{
45610 			setState(6287);
45611 			ignoredIdentifiers();
45612 			}
45613 		}
45614 		catch (RecognitionException re) {
45615 			_localctx.exception = re;
45616 			_errHandler.reportError(this, re);
45617 			_errHandler.recover(this, re);
45618 		}
45619 		finally {
45620 			exitRule();
45621 		}
45622 		return _localctx;
45623 	}
45624 
45625 	public static class SetUserContext extends ParserRuleContext {
45626 		public TerminalNode SETUSER() { return getToken(SQLServerStatementParser.SETUSER, 0); }
45627 		public StringLiteralsContext stringLiterals() {
45628 			return getRuleContext(StringLiteralsContext.class,0);
45629 		}
45630 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
45631 		public TerminalNode NORESET() { return getToken(SQLServerStatementParser.NORESET, 0); }
45632 		public SetUserContext(ParserRuleContext parent, int invokingState) {
45633 			super(parent, invokingState);
45634 		}
45635 		@Override public int getRuleIndex() { return RULE_setUser; }
45636 		@Override
45637 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45638 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetUser(this);
45639 			else return visitor.visitChildren(this);
45640 		}
45641 	}
45642 
45643 	public final SetUserContext setUser() throws RecognitionException {
45644 		SetUserContext _localctx = new SetUserContext(_ctx, getState());
45645 		enterRule(_localctx, 866, RULE_setUser);
45646 		int _la;
45647 		try {
45648 			enterOuterAlt(_localctx, 1);
45649 			{
45650 			setState(6289);
45651 			match(SETUSER);
45652 			setState(6295);
45653 			_errHandler.sync(this);
45654 			_la = _input.LA(1);
45655 			if (_la==STRING_ || _la==NCHAR_TEXT) {
45656 				{
45657 				setState(6290);
45658 				stringLiterals();
45659 				setState(6293);
45660 				_errHandler.sync(this);
45661 				_la = _input.LA(1);
45662 				if (_la==WITH) {
45663 					{
45664 					setState(6291);
45665 					match(WITH);
45666 					setState(6292);
45667 					match(NORESET);
45668 					}
45669 				}
45670 
45671 				}
45672 			}
45673 
45674 			}
45675 		}
45676 		catch (RecognitionException re) {
45677 			_localctx.exception = re;
45678 			_errHandler.reportError(this, re);
45679 			_errHandler.recover(this, re);
45680 		}
45681 		finally {
45682 			exitRule();
45683 		}
45684 		return _localctx;
45685 	}
45686 
45687 	public static class CreateUserContext extends ParserRuleContext {
45688 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
45689 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
45690 		public CreateUserLoginClauseContext createUserLoginClause() {
45691 			return getRuleContext(CreateUserLoginClauseContext.class,0);
45692 		}
45693 		public CreateUserWindowsPrincipalClauseContext createUserWindowsPrincipalClause() {
45694 			return getRuleContext(CreateUserWindowsPrincipalClauseContext.class,0);
45695 		}
45696 		public CreateUserLoginWindowsPrincipalClauseContext createUserLoginWindowsPrincipalClause() {
45697 			return getRuleContext(CreateUserLoginWindowsPrincipalClauseContext.class,0);
45698 		}
45699 		public CreateUserWithoutLoginClauseContext createUserWithoutLoginClause() {
45700 			return getRuleContext(CreateUserWithoutLoginClauseContext.class,0);
45701 		}
45702 		public CreateUserFromExternalProviderClauseContext createUserFromExternalProviderClause() {
45703 			return getRuleContext(CreateUserFromExternalProviderClauseContext.class,0);
45704 		}
45705 		public CreateUserWithDefaultSchemaContext createUserWithDefaultSchema() {
45706 			return getRuleContext(CreateUserWithDefaultSchemaContext.class,0);
45707 		}
45708 		public CreateUserWithAzureActiveDirectoryPrincipalClauseContext createUserWithAzureActiveDirectoryPrincipalClause() {
45709 			return getRuleContext(CreateUserWithAzureActiveDirectoryPrincipalClauseContext.class,0);
45710 		}
45711 		public UserNameContext userName() {
45712 			return getRuleContext(UserNameContext.class,0);
45713 		}
45714 		public CreateUserContext(ParserRuleContext parent, int invokingState) {
45715 			super(parent, invokingState);
45716 		}
45717 		@Override public int getRuleIndex() { return RULE_createUser; }
45718 		@Override
45719 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45720 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUser(this);
45721 			else return visitor.visitChildren(this);
45722 		}
45723 	}
45724 
45725 	public final CreateUserContext createUser() throws RecognitionException {
45726 		CreateUserContext _localctx = new CreateUserContext(_ctx, getState());
45727 		enterRule(_localctx, 868, RULE_createUser);
45728 		try {
45729 			enterOuterAlt(_localctx, 1);
45730 			{
45731 			setState(6297);
45732 			match(CREATE);
45733 			setState(6298);
45734 			match(USER);
45735 			setState(6307);
45736 			_errHandler.sync(this);
45737 			switch ( getInterpreter().adaptivePredict(_input,713,_ctx) ) {
45738 			case 1:
45739 				{
45740 				setState(6299);
45741 				createUserLoginClause();
45742 				}
45743 				break;
45744 			case 2:
45745 				{
45746 				setState(6300);
45747 				createUserWindowsPrincipalClause();
45748 				}
45749 				break;
45750 			case 3:
45751 				{
45752 				setState(6301);
45753 				createUserLoginWindowsPrincipalClause();
45754 				}
45755 				break;
45756 			case 4:
45757 				{
45758 				setState(6302);
45759 				createUserWithoutLoginClause();
45760 				}
45761 				break;
45762 			case 5:
45763 				{
45764 				setState(6303);
45765 				createUserFromExternalProviderClause();
45766 				}
45767 				break;
45768 			case 6:
45769 				{
45770 				setState(6304);
45771 				createUserWithDefaultSchema();
45772 				}
45773 				break;
45774 			case 7:
45775 				{
45776 				setState(6305);
45777 				createUserWithAzureActiveDirectoryPrincipalClause();
45778 				}
45779 				break;
45780 			case 8:
45781 				{
45782 				setState(6306);
45783 				userName();
45784 				}
45785 				break;
45786 			}
45787 			}
45788 		}
45789 		catch (RecognitionException re) {
45790 			_localctx.exception = re;
45791 			_errHandler.reportError(this, re);
45792 			_errHandler.recover(this, re);
45793 		}
45794 		finally {
45795 			exitRule();
45796 		}
45797 		return _localctx;
45798 	}
45799 
45800 	public static class CreateUserLoginClauseContext extends ParserRuleContext {
45801 		public UserNameContext userName() {
45802 			return getRuleContext(UserNameContext.class,0);
45803 		}
45804 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
45805 		public IdentifierContext identifier() {
45806 			return getRuleContext(IdentifierContext.class,0);
45807 		}
45808 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
45809 		public List<LimitedOptionsListContext> limitedOptionsList() {
45810 			return getRuleContexts(LimitedOptionsListContext.class);
45811 		}
45812 		public LimitedOptionsListContext limitedOptionsList(int i) {
45813 			return getRuleContext(LimitedOptionsListContext.class,i);
45814 		}
45815 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
45816 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
45817 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
45818 		public TerminalNode COMMA_(int i) {
45819 			return getToken(SQLServerStatementParser.COMMA_, i);
45820 		}
45821 		public CreateUserLoginClauseContext(ParserRuleContext parent, int invokingState) {
45822 			super(parent, invokingState);
45823 		}
45824 		@Override public int getRuleIndex() { return RULE_createUserLoginClause; }
45825 		@Override
45826 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45827 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserLoginClause(this);
45828 			else return visitor.visitChildren(this);
45829 		}
45830 	}
45831 
45832 	public final CreateUserLoginClauseContext createUserLoginClause() throws RecognitionException {
45833 		CreateUserLoginClauseContext _localctx = new CreateUserLoginClauseContext(_ctx, getState());
45834 		enterRule(_localctx, 870, RULE_createUserLoginClause);
45835 		int _la;
45836 		try {
45837 			enterOuterAlt(_localctx, 1);
45838 			{
45839 			setState(6309);
45840 			userName();
45841 			setState(6313);
45842 			_errHandler.sync(this);
45843 			_la = _input.LA(1);
45844 			if (_la==FROM || _la==FOR) {
45845 				{
45846 				setState(6310);
45847 				_la = _input.LA(1);
45848 				if ( !(_la==FROM || _la==FOR) ) {
45849 				_errHandler.recoverInline(this);
45850 				}
45851 				else {
45852 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
45853 					_errHandler.reportMatch(this);
45854 					consume();
45855 				}
45856 				setState(6311);
45857 				match(LOGIN);
45858 				setState(6312);
45859 				identifier();
45860 				}
45861 			}
45862 
45863 			setState(6324);
45864 			_errHandler.sync(this);
45865 			_la = _input.LA(1);
45866 			if (_la==WITH) {
45867 				{
45868 				setState(6315);
45869 				match(WITH);
45870 				setState(6316);
45871 				limitedOptionsList();
45872 				setState(6321);
45873 				_errHandler.sync(this);
45874 				_la = _input.LA(1);
45875 				while (_la==COMMA_) {
45876 					{
45877 					{
45878 					setState(6317);
45879 					match(COMMA_);
45880 					setState(6318);
45881 					limitedOptionsList();
45882 					}
45883 					}
45884 					setState(6323);
45885 					_errHandler.sync(this);
45886 					_la = _input.LA(1);
45887 				}
45888 				}
45889 			}
45890 
45891 			}
45892 		}
45893 		catch (RecognitionException re) {
45894 			_localctx.exception = re;
45895 			_errHandler.reportError(this, re);
45896 			_errHandler.recover(this, re);
45897 		}
45898 		finally {
45899 			exitRule();
45900 		}
45901 		return _localctx;
45902 	}
45903 
45904 	public static class CreateUserWindowsPrincipalClauseContext extends ParserRuleContext {
45905 		public WindowsPrincipalContext windowsPrincipal() {
45906 			return getRuleContext(WindowsPrincipalContext.class,0);
45907 		}
45908 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
45909 		public List<OptionsListContext> optionsList() {
45910 			return getRuleContexts(OptionsListContext.class);
45911 		}
45912 		public OptionsListContext optionsList(int i) {
45913 			return getRuleContext(OptionsListContext.class,i);
45914 		}
45915 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
45916 		public TerminalNode COMMA_(int i) {
45917 			return getToken(SQLServerStatementParser.COMMA_, i);
45918 		}
45919 		public UserNameContext userName() {
45920 			return getRuleContext(UserNameContext.class,0);
45921 		}
45922 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
45923 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
45924 		public StringLiteralsContext stringLiterals() {
45925 			return getRuleContext(StringLiteralsContext.class,0);
45926 		}
45927 		public AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() {
45928 			return getRuleContext(AzureActiveDirectoryPrincipalContext.class,0);
45929 		}
45930 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
45931 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
45932 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
45933 		public CreateUserWindowsPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
45934 			super(parent, invokingState);
45935 		}
45936 		@Override public int getRuleIndex() { return RULE_createUserWindowsPrincipalClause; }
45937 		@Override
45938 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45939 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWindowsPrincipalClause(this);
45940 			else return visitor.visitChildren(this);
45941 		}
45942 	}
45943 
45944 	public final CreateUserWindowsPrincipalClauseContext createUserWindowsPrincipalClause() throws RecognitionException {
45945 		CreateUserWindowsPrincipalClauseContext _localctx = new CreateUserWindowsPrincipalClauseContext(_ctx, getState());
45946 		enterRule(_localctx, 872, RULE_createUserWindowsPrincipalClause);
45947 		int _la;
45948 		try {
45949 			setState(6359);
45950 			_errHandler.sync(this);
45951 			switch ( getInterpreter().adaptivePredict(_input,721,_ctx) ) {
45952 			case 1:
45953 				enterOuterAlt(_localctx, 1);
45954 				{
45955 				setState(6326);
45956 				windowsPrincipal();
45957 				setState(6336);
45958 				_errHandler.sync(this);
45959 				_la = _input.LA(1);
45960 				if (_la==WITH) {
45961 					{
45962 					setState(6327);
45963 					match(WITH);
45964 					setState(6328);
45965 					optionsList();
45966 					setState(6333);
45967 					_errHandler.sync(this);
45968 					_la = _input.LA(1);
45969 					while (_la==COMMA_) {
45970 						{
45971 						{
45972 						setState(6329);
45973 						match(COMMA_);
45974 						setState(6330);
45975 						optionsList();
45976 						}
45977 						}
45978 						setState(6335);
45979 						_errHandler.sync(this);
45980 						_la = _input.LA(1);
45981 					}
45982 					}
45983 				}
45984 
45985 				}
45986 				break;
45987 			case 2:
45988 				enterOuterAlt(_localctx, 2);
45989 				{
45990 				setState(6338);
45991 				userName();
45992 				setState(6339);
45993 				match(WITH);
45994 				setState(6340);
45995 				match(PASSWORD);
45996 				setState(6341);
45997 				match(EQ_);
45998 				setState(6342);
45999 				stringLiterals();
46000 				setState(6352);
46001 				_errHandler.sync(this);
46002 				_la = _input.LA(1);
46003 				if (_la==COMMA_) {
46004 					{
46005 					setState(6343);
46006 					match(COMMA_);
46007 					setState(6344);
46008 					optionsList();
46009 					setState(6349);
46010 					_errHandler.sync(this);
46011 					_la = _input.LA(1);
46012 					while (_la==COMMA_) {
46013 						{
46014 						{
46015 						setState(6345);
46016 						match(COMMA_);
46017 						setState(6346);
46018 						optionsList();
46019 						}
46020 						}
46021 						setState(6351);
46022 						_errHandler.sync(this);
46023 						_la = _input.LA(1);
46024 					}
46025 					}
46026 				}
46027 
46028 				}
46029 				break;
46030 			case 3:
46031 				enterOuterAlt(_localctx, 3);
46032 				{
46033 				setState(6354);
46034 				azureActiveDirectoryPrincipal();
46035 				setState(6355);
46036 				match(FROM);
46037 				setState(6356);
46038 				match(EXTERNAL);
46039 				setState(6357);
46040 				match(PROVIDER);
46041 				}
46042 				break;
46043 			}
46044 		}
46045 		catch (RecognitionException re) {
46046 			_localctx.exception = re;
46047 			_errHandler.reportError(this, re);
46048 			_errHandler.recover(this, re);
46049 		}
46050 		finally {
46051 			exitRule();
46052 		}
46053 		return _localctx;
46054 	}
46055 
46056 	public static class CreateUserLoginWindowsPrincipalClauseContext extends ParserRuleContext {
46057 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
46058 		public List<LimitedOptionsListContext> limitedOptionsList() {
46059 			return getRuleContexts(LimitedOptionsListContext.class);
46060 		}
46061 		public LimitedOptionsListContext limitedOptionsList(int i) {
46062 			return getRuleContext(LimitedOptionsListContext.class,i);
46063 		}
46064 		public List<WindowsPrincipalContext> windowsPrincipal() {
46065 			return getRuleContexts(WindowsPrincipalContext.class);
46066 		}
46067 		public WindowsPrincipalContext windowsPrincipal(int i) {
46068 			return getRuleContext(WindowsPrincipalContext.class,i);
46069 		}
46070 		public UserNameContext userName() {
46071 			return getRuleContext(UserNameContext.class,0);
46072 		}
46073 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
46074 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
46075 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
46076 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
46077 		public TerminalNode COMMA_(int i) {
46078 			return getToken(SQLServerStatementParser.COMMA_, i);
46079 		}
46080 		public CreateUserLoginWindowsPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
46081 			super(parent, invokingState);
46082 		}
46083 		@Override public int getRuleIndex() { return RULE_createUserLoginWindowsPrincipalClause; }
46084 		@Override
46085 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46086 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserLoginWindowsPrincipalClause(this);
46087 			else return visitor.visitChildren(this);
46088 		}
46089 	}
46090 
46091 	public final CreateUserLoginWindowsPrincipalClauseContext createUserLoginWindowsPrincipalClause() throws RecognitionException {
46092 		CreateUserLoginWindowsPrincipalClauseContext _localctx = new CreateUserLoginWindowsPrincipalClauseContext(_ctx, getState());
46093 		enterRule(_localctx, 874, RULE_createUserLoginWindowsPrincipalClause);
46094 		int _la;
46095 		try {
46096 			enterOuterAlt(_localctx, 1);
46097 			{
46098 			setState(6372);
46099 			_errHandler.sync(this);
46100 			switch ( getInterpreter().adaptivePredict(_input,723,_ctx) ) {
46101 			case 1:
46102 				{
46103 				{
46104 				setState(6361);
46105 				windowsPrincipal();
46106 				setState(6365);
46107 				_errHandler.sync(this);
46108 				_la = _input.LA(1);
46109 				if (_la==FROM || _la==FOR) {
46110 					{
46111 					setState(6362);
46112 					_la = _input.LA(1);
46113 					if ( !(_la==FROM || _la==FOR) ) {
46114 					_errHandler.recoverInline(this);
46115 					}
46116 					else {
46117 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46118 						_errHandler.reportMatch(this);
46119 						consume();
46120 					}
46121 					setState(6363);
46122 					match(LOGIN);
46123 					setState(6364);
46124 					windowsPrincipal();
46125 					}
46126 				}
46127 
46128 				}
46129 				}
46130 				break;
46131 			case 2:
46132 				{
46133 				{
46134 				setState(6367);
46135 				userName();
46136 				setState(6368);
46137 				_la = _input.LA(1);
46138 				if ( !(_la==FROM || _la==FOR) ) {
46139 				_errHandler.recoverInline(this);
46140 				}
46141 				else {
46142 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46143 					_errHandler.reportMatch(this);
46144 					consume();
46145 				}
46146 				setState(6369);
46147 				match(LOGIN);
46148 				setState(6370);
46149 				windowsPrincipal();
46150 				}
46151 				}
46152 				break;
46153 			}
46154 			setState(6383);
46155 			_errHandler.sync(this);
46156 			_la = _input.LA(1);
46157 			if (_la==WITH) {
46158 				{
46159 				setState(6374);
46160 				match(WITH);
46161 				setState(6375);
46162 				limitedOptionsList();
46163 				setState(6380);
46164 				_errHandler.sync(this);
46165 				_la = _input.LA(1);
46166 				while (_la==COMMA_) {
46167 					{
46168 					{
46169 					setState(6376);
46170 					match(COMMA_);
46171 					setState(6377);
46172 					limitedOptionsList();
46173 					}
46174 					}
46175 					setState(6382);
46176 					_errHandler.sync(this);
46177 					_la = _input.LA(1);
46178 				}
46179 				}
46180 			}
46181 
46182 			}
46183 		}
46184 		catch (RecognitionException re) {
46185 			_localctx.exception = re;
46186 			_errHandler.reportError(this, re);
46187 			_errHandler.recover(this, re);
46188 		}
46189 		finally {
46190 			exitRule();
46191 		}
46192 		return _localctx;
46193 	}
46194 
46195 	public static class CreateUserWithoutLoginClauseContext extends ParserRuleContext {
46196 		public UserNameContext userName() {
46197 			return getRuleContext(UserNameContext.class,0);
46198 		}
46199 		public TerminalNode WITHOUT() { return getToken(SQLServerStatementParser.WITHOUT, 0); }
46200 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
46201 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
46202 		public IdentifierContext identifier() {
46203 			return getRuleContext(IdentifierContext.class,0);
46204 		}
46205 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
46206 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
46207 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
46208 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
46209 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
46210 		public List<LimitedOptionsListContext> limitedOptionsList() {
46211 			return getRuleContexts(LimitedOptionsListContext.class);
46212 		}
46213 		public LimitedOptionsListContext limitedOptionsList(int i) {
46214 			return getRuleContext(LimitedOptionsListContext.class,i);
46215 		}
46216 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
46217 		public TerminalNode COMMA_(int i) {
46218 			return getToken(SQLServerStatementParser.COMMA_, i);
46219 		}
46220 		public CreateUserWithoutLoginClauseContext(ParserRuleContext parent, int invokingState) {
46221 			super(parent, invokingState);
46222 		}
46223 		@Override public int getRuleIndex() { return RULE_createUserWithoutLoginClause; }
46224 		@Override
46225 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46226 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithoutLoginClause(this);
46227 			else return visitor.visitChildren(this);
46228 		}
46229 	}
46230 
46231 	public final CreateUserWithoutLoginClauseContext createUserWithoutLoginClause() throws RecognitionException {
46232 		CreateUserWithoutLoginClauseContext _localctx = new CreateUserWithoutLoginClauseContext(_ctx, getState());
46233 		enterRule(_localctx, 876, RULE_createUserWithoutLoginClause);
46234 		int _la;
46235 		try {
46236 			enterOuterAlt(_localctx, 1);
46237 			{
46238 			setState(6385);
46239 			userName();
46240 			setState(6406);
46241 			_errHandler.sync(this);
46242 			switch ( getInterpreter().adaptivePredict(_input,728,_ctx) ) {
46243 			case 1:
46244 				{
46245 				setState(6386);
46246 				match(WITHOUT);
46247 				setState(6387);
46248 				match(LOGIN);
46249 				setState(6397);
46250 				_errHandler.sync(this);
46251 				_la = _input.LA(1);
46252 				if (_la==WITH) {
46253 					{
46254 					setState(6388);
46255 					match(WITH);
46256 					setState(6389);
46257 					limitedOptionsList();
46258 					setState(6394);
46259 					_errHandler.sync(this);
46260 					_la = _input.LA(1);
46261 					while (_la==COMMA_) {
46262 						{
46263 						{
46264 						setState(6390);
46265 						match(COMMA_);
46266 						setState(6391);
46267 						limitedOptionsList();
46268 						}
46269 						}
46270 						setState(6396);
46271 						_errHandler.sync(this);
46272 						_la = _input.LA(1);
46273 					}
46274 					}
46275 				}
46276 
46277 				}
46278 				break;
46279 			case 2:
46280 				{
46281 				setState(6399);
46282 				_la = _input.LA(1);
46283 				if ( !(_la==FROM || _la==FOR) ) {
46284 				_errHandler.recoverInline(this);
46285 				}
46286 				else {
46287 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46288 					_errHandler.reportMatch(this);
46289 					consume();
46290 				}
46291 				setState(6400);
46292 				match(CERTIFICATE);
46293 				setState(6401);
46294 				identifier();
46295 				}
46296 				break;
46297 			case 3:
46298 				{
46299 				setState(6402);
46300 				_la = _input.LA(1);
46301 				if ( !(_la==FROM || _la==FOR) ) {
46302 				_errHandler.recoverInline(this);
46303 				}
46304 				else {
46305 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46306 					_errHandler.reportMatch(this);
46307 					consume();
46308 				}
46309 				setState(6403);
46310 				match(ASYMMETRIC);
46311 				setState(6404);
46312 				match(KEY);
46313 				setState(6405);
46314 				identifier();
46315 				}
46316 				break;
46317 			}
46318 			}
46319 		}
46320 		catch (RecognitionException re) {
46321 			_localctx.exception = re;
46322 			_errHandler.reportError(this, re);
46323 			_errHandler.recover(this, re);
46324 		}
46325 		finally {
46326 			exitRule();
46327 		}
46328 		return _localctx;
46329 	}
46330 
46331 	public static class OptionsListContext extends ParserRuleContext {
46332 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
46333 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
46334 		public SchemaNameContext schemaName() {
46335 			return getRuleContext(SchemaNameContext.class,0);
46336 		}
46337 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
46338 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
46339 		public IdentifierContext identifier() {
46340 			return getRuleContext(IdentifierContext.class,0);
46341 		}
46342 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
46343 		public SidContext sid() {
46344 			return getRuleContext(SidContext.class,0);
46345 		}
46346 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
46347 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
46348 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
46349 		public OptionsListContext(ParserRuleContext parent, int invokingState) {
46350 			super(parent, invokingState);
46351 		}
46352 		@Override public int getRuleIndex() { return RULE_optionsList; }
46353 		@Override
46354 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46355 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionsList(this);
46356 			else return visitor.visitChildren(this);
46357 		}
46358 	}
46359 
46360 	public final OptionsListContext optionsList() throws RecognitionException {
46361 		OptionsListContext _localctx = new OptionsListContext(_ctx, getState());
46362 		enterRule(_localctx, 878, RULE_optionsList);
46363 		int _la;
46364 		try {
46365 			setState(6425);
46366 			_errHandler.sync(this);
46367 			switch (_input.LA(1)) {
46368 			case DEFAULT_SCHEMA:
46369 				enterOuterAlt(_localctx, 1);
46370 				{
46371 				setState(6408);
46372 				match(DEFAULT_SCHEMA);
46373 				setState(6409);
46374 				match(EQ_);
46375 				setState(6410);
46376 				schemaName();
46377 				}
46378 				break;
46379 			case DEFAULT_LANGUAGE:
46380 				enterOuterAlt(_localctx, 2);
46381 				{
46382 				setState(6411);
46383 				match(DEFAULT_LANGUAGE);
46384 				setState(6412);
46385 				match(EQ_);
46386 				setState(6415);
46387 				_errHandler.sync(this);
46388 				switch (_input.LA(1)) {
46389 				case NONE:
46390 					{
46391 					setState(6413);
46392 					match(NONE);
46393 					}
46394 					break;
46395 				case TRUNCATE:
46396 				case SCHEMA:
46397 				case FUNCTION:
46398 				case TRIGGER:
46399 				case CAST:
46400 				case GROUP:
46401 				case LIMIT:
46402 				case OFFSET:
46403 				case SAVEPOINT:
46404 				case BOOLEAN:
46405 				case ARRAY:
46406 				case DATE:
46407 				case LOCALTIME:
46408 				case LOCALTIMESTAMP:
46409 				case QUARTER:
46410 				case WEEK:
46411 				case DAY:
46412 				case MICROSECOND:
46413 				case MAX:
46414 				case MIN:
46415 				case SUM:
46416 				case COUNT:
46417 				case AVG:
46418 				case ENABLE:
46419 				case DISABLE:
46420 				case INSTANCE:
46421 				case DO:
46422 				case DEFINER:
46423 				case SQL:
46424 				case CASCADED:
46425 				case LOCAL:
46426 				case NEXT:
46427 				case NAME:
46428 				case INTEGER:
46429 				case TYPE:
46430 				case READ_ONLY:
46431 				case DATABASE:
46432 				case DATEPART:
46433 				case PASSWORD:
46434 				case BINARY:
46435 				case HIDDEN_:
46436 				case MOD:
46437 				case PARTITION:
46438 				case PARTITIONS:
46439 				case TOP:
46440 				case ROW:
46441 				case ROWS:
46442 				case XOR:
46443 				case ALWAYS:
46444 				case ROLE:
46445 				case START:
46446 				case ALGORITHM:
46447 				case AUTO:
46448 				case BLOCKERS:
46449 				case CLUSTERED:
46450 				case NONCLUSTERED:
46451 				case COLUMNSTORE:
46452 				case CONTENT:
46453 				case YEARS:
46454 				case MONTHS:
46455 				case WEEKS:
46456 				case DAYS:
46457 				case MINUTES:
46458 				case DENY:
46459 				case DETERMINISTIC:
46460 				case DISTRIBUTION:
46461 				case DOCUMENT:
46462 				case DURABILITY:
46463 				case ENCRYPTED:
46464 				case FILESTREAM:
46465 				case FILETABLE:
46466 				case FILLFACTOR:
46467 				case FOLLOWING:
46468 				case HASH:
46469 				case HEAP:
46470 				case INBOUND:
46471 				case OUTBOUND:
46472 				case UNBOUNDED:
46473 				case INFINITE:
46474 				case LOGIN:
46475 				case MASKED:
46476 				case MAXDOP:
46477 				case MOVE:
46478 				case NOCHECK:
46479 				case OBJECT:
46480 				case OFF:
46481 				case ONLINE:
46482 				case OVER:
46483 				case PAGE:
46484 				case PAUSED:
46485 				case PERIOD:
46486 				case PERSISTED:
46487 				case PRECEDING:
46488 				case RANDOMIZED:
46489 				case RANGE:
46490 				case REBUILD:
46491 				case REPLICATE:
46492 				case REPLICATION:
46493 				case RESUMABLE:
46494 				case ROWGUIDCOL:
46495 				case SAVE:
46496 				case SELF:
46497 				case SPARSE:
46498 				case SWITCH:
46499 				case TRAN:
46500 				case TRANCOUNT:
46501 				case CONTROL:
46502 				case CONCAT:
46503 				case TAKE:
46504 				case OWNERSHIP:
46505 				case DEFINITION:
46506 				case APPLICATION:
46507 				case ASSEMBLY:
46508 				case SYMMETRIC:
46509 				case ASYMMETRIC:
46510 				case SERVER:
46511 				case RECEIVE:
46512 				case CHANGE:
46513 				case TRACE:
46514 				case TRACKING:
46515 				case RESOURCES:
46516 				case SETTINGS:
46517 				case STATE:
46518 				case AVAILABILITY:
46519 				case CREDENTIAL:
46520 				case ENDPOINT:
46521 				case EVENT:
46522 				case NOTIFICATION:
46523 				case LINKED:
46524 				case AUDIT:
46525 				case DDL:
46526 				case XML:
46527 				case IMPERSONATE:
46528 				case SECURABLES:
46529 				case AUTHENTICATE:
46530 				case EXTERNAL:
46531 				case ACCESS:
46532 				case ADMINISTER:
46533 				case BULK:
46534 				case OPERATIONS:
46535 				case UNSAFE:
46536 				case SHUTDOWN:
46537 				case SCOPED:
46538 				case CONFIGURATION:
46539 				case DATASPACE:
46540 				case SERVICE:
46541 				case CERTIFICATE:
46542 				case CONTRACT:
46543 				case ENCRYPTION:
46544 				case MASTER:
46545 				case DATA:
46546 				case SOURCE:
46547 				case FILE:
46548 				case FORMAT:
46549 				case LIBRARY:
46550 				case FULLTEXT:
46551 				case MASK:
46552 				case UNMASK:
46553 				case MESSAGE:
46554 				case REMOTE:
46555 				case BINDING:
46556 				case ROUTE:
46557 				case SECURITY:
46558 				case POLICY:
46559 				case AGGREGATE:
46560 				case QUEUE:
46561 				case RULE:
46562 				case SYNONYM:
46563 				case COLLECTION:
46564 				case SCRIPT:
46565 				case KILL:
46566 				case BACKUP:
46567 				case LOG:
46568 				case SHOWPLAN:
46569 				case SUBSCRIBE:
46570 				case QUERY:
46571 				case NOTIFICATIONS:
46572 				case CHECKPOINT:
46573 				case SEQUENCE:
46574 				case ABORT_AFTER_WAIT:
46575 				case ALLOW_PAGE_LOCKS:
46576 				case ALLOW_ROW_LOCKS:
46577 				case ALL_SPARSE_COLUMNS:
46578 				case BUCKET_COUNT:
46579 				case COLUMNSTORE_ARCHIVE:
46580 				case COLUMN_ENCRYPTION_KEY:
46581 				case COLUMN_SET:
46582 				case COMPRESSION_DELAY:
46583 				case DATABASE_DEAULT:
46584 				case DATA_COMPRESSION:
46585 				case DATA_CONSISTENCY_CHECK:
46586 				case ENCRYPTION_TYPE:
46587 				case SYSTEM_TIME:
46588 				case SYSTEM_VERSIONING:
46589 				case TEXTIMAGE_ON:
46590 				case WAIT_AT_LOW_PRIORITY:
46591 				case STATISTICS_INCREMENTAL:
46592 				case STATISTICS_NORECOMPUTE:
46593 				case ROUND_ROBIN:
46594 				case SCHEMA_AND_DATA:
46595 				case SCHEMA_ONLY:
46596 				case SORT_IN_TEMPDB:
46597 				case IGNORE_DUP_KEY:
46598 				case IMPLICIT_TRANSACTIONS:
46599 				case MAX_DURATION:
46600 				case MEMORY_OPTIMIZED:
46601 				case MIGRATION_STATE:
46602 				case PAD_INDEX:
46603 				case REMOTE_DATA_ARCHIVE:
46604 				case FILESTREAM_ON:
46605 				case FILETABLE_COLLATE_FILENAME:
46606 				case FILETABLE_DIRECTORY:
46607 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
46608 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
46609 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
46610 				case FILTER_PREDICATE:
46611 				case HISTORY_RETENTION_PERIOD:
46612 				case HISTORY_TABLE:
46613 				case LOCK_ESCALATION:
46614 				case DROP_EXISTING:
46615 				case ROW_NUMBER:
46616 				case FIRST:
46617 				case DATETIME2:
46618 				case OUTPUT:
46619 				case INSERTED:
46620 				case DELETED:
46621 				case FILENAME:
46622 				case MAXSIZE:
46623 				case FILEGROWTH:
46624 				case UNLIMITED:
46625 				case KB:
46626 				case MB:
46627 				case GB:
46628 				case TB:
46629 				case MEMORY_OPTIMIZED_DATA:
46630 				case FILEGROUP:
46631 				case NON_TRANSACTED_ACCESS:
46632 				case DB_CHAINING:
46633 				case TRUSTWORTHY:
46634 				case FORWARD_ONLY:
46635 				case KEYSET:
46636 				case FAST_FORWARD:
46637 				case SCROLL_LOCKS:
46638 				case OPTIMISTIC:
46639 				case TYPE_WARNING:
46640 				case SCHEMABINDING:
46641 				case CALLER:
46642 				case OWNER:
46643 				case SNAPSHOT:
46644 				case REPEATABLE:
46645 				case SERIALIZABLE:
46646 				case NATIVE_COMPILATION:
46647 				case VIEW_METADATA:
46648 				case INSTEAD:
46649 				case APPEND:
46650 				case INCREMENT:
46651 				case CACHE:
46652 				case MINVALUE:
46653 				case MAXVALUE:
46654 				case RESTART:
46655 				case LOB_COMPACTION:
46656 				case COMPRESS_ALL_ROW_GROUPS:
46657 				case REORGANIZE:
46658 				case RESUME:
46659 				case PAUSE:
46660 				case ABORT:
46661 				case ACCELERATED_DATABASE_RECOVERY:
46662 				case PERSISTENT_VERSION_STORE_FILEGROUP:
46663 				case IMMEDIATE:
46664 				case NO_WAIT:
46665 				case TARGET_RECOVERY_TIME:
46666 				case SECONDS:
46667 				case HONOR_BROKER_PRIORITY:
46668 				case ERROR_BROKER_CONVERSATIONS:
46669 				case NEW_BROKER:
46670 				case DISABLE_BROKER:
46671 				case ENABLE_BROKER:
46672 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
46673 				case READ_COMMITTED_SNAPSHOT:
46674 				case ALLOW_SNAPSHOT_ISOLATION:
46675 				case RECURSIVE_TRIGGERS:
46676 				case QUOTED_IDENTIFIER:
46677 				case NUMERIC_ROUNDABORT:
46678 				case CONCAT_NULL_YIELDS_NULL:
46679 				case COMPATIBILITY_LEVEL:
46680 				case ARITHABORT:
46681 				case ANSI_WARNINGS:
46682 				case ANSI_PADDING:
46683 				case ANSI_NULLS:
46684 				case ANSI_NULL_DEFAULT:
46685 				case PAGE_VERIFY:
46686 				case CHECKSUM:
46687 				case TORN_PAGE_DETECTION:
46688 				case BULK_LOGGED:
46689 				case RECOVERY:
46690 				case TOTAL_EXECUTION_CPU_TIME_MS:
46691 				case TOTAL_COMPILE_CPU_TIME_MS:
46692 				case STALE_CAPTURE_POLICY_THRESHOLD:
46693 				case EXECUTION_COUNT:
46694 				case QUERY_CAPTURE_POLICY:
46695 				case WAIT_STATS_CAPTURE_MODE:
46696 				case MAX_PLANS_PER_QUERY:
46697 				case QUERY_CAPTURE_MODE:
46698 				case SIZE_BASED_CLEANUP_MODE:
46699 				case INTERVAL_LENGTH_MINUTES:
46700 				case MAX_STORAGE_SIZE_MB:
46701 				case DATA_FLUSH_INTERVAL_SECONDS:
46702 				case CLEANUP_POLICY:
46703 				case CUSTOM:
46704 				case STALE_QUERY_THRESHOLD_DAYS:
46705 				case OPERATION_MODE:
46706 				case QUERY_STORE:
46707 				case CURSOR_DEFAULT:
46708 				case GLOBAL:
46709 				case CURSOR_CLOSE_ON_COMMIT:
46710 				case HOURS:
46711 				case CHANGE_RETENTION:
46712 				case AUTO_CLEANUP:
46713 				case CHANGE_TRACKING:
46714 				case AUTOMATIC_TUNING:
46715 				case FORCE_LAST_GOOD_PLAN:
46716 				case AUTO_UPDATE_STATISTICS_ASYNC:
46717 				case AUTO_UPDATE_STATISTICS:
46718 				case AUTO_SHRINK:
46719 				case AUTO_CREATE_STATISTICS:
46720 				case INCREMENTAL:
46721 				case AUTO_CLOSE:
46722 				case DATA_RETENTION:
46723 				case TEMPORAL_HISTORY_RETENTION:
46724 				case EDITION:
46725 				case MIXED_PAGE_ALLOCATION:
46726 				case DISABLED:
46727 				case ALLOWED:
46728 				case HADR:
46729 				case MULTI_USER:
46730 				case RESTRICTED_USER:
46731 				case SINGLE_USER:
46732 				case OFFLINE:
46733 				case EMERGENCY:
46734 				case SUSPEND:
46735 				case DATE_CORRELATION_OPTIMIZATION:
46736 				case ELASTIC_POOL:
46737 				case SERVICE_OBJECTIVE:
46738 				case DATABASE_NAME:
46739 				case ALLOW_CONNECTIONS:
46740 				case GEO:
46741 				case NAMED:
46742 				case DATEFIRST:
46743 				case BACKUP_STORAGE_REDUNDANCY:
46744 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
46745 				case SECONDARY:
46746 				case FAILOVER:
46747 				case DEFAULT_FULLTEXT_LANGUAGE:
46748 				case DEFAULT_LANGUAGE:
46749 				case INLINE:
46750 				case NESTED_TRIGGERS:
46751 				case TRANSFORM_NOISE_WORDS:
46752 				case TWO_DIGIT_YEAR_CUTOFF:
46753 				case PERSISTENT_LOG_BUFFER:
46754 				case DIRECTORY_NAME:
46755 				case DATEFORMAT:
46756 				case DELAYED_DURABILITY:
46757 				case AUTHORIZATION:
46758 				case TRANSFER:
46759 				case SEARCH:
46760 				case MEMBER:
46761 				case IDENTIFIER_:
46762 				case DELIMITED_IDENTIFIER_:
46763 					{
46764 					setState(6414);
46765 					identifier();
46766 					}
46767 					break;
46768 				default:
46769 					throw new NoViableAltException(this);
46770 				}
46771 				}
46772 				break;
46773 			case SID:
46774 				enterOuterAlt(_localctx, 3);
46775 				{
46776 				setState(6417);
46777 				match(SID);
46778 				setState(6418);
46779 				match(EQ_);
46780 				setState(6419);
46781 				sid();
46782 				}
46783 				break;
46784 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
46785 				enterOuterAlt(_localctx, 4);
46786 				{
46787 				setState(6420);
46788 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
46789 				setState(6421);
46790 				match(EQ_);
46791 				setState(6423);
46792 				_errHandler.sync(this);
46793 				_la = _input.LA(1);
46794 				if (_la==ON || _la==OFF) {
46795 					{
46796 					setState(6422);
46797 					_la = _input.LA(1);
46798 					if ( !(_la==ON || _la==OFF) ) {
46799 					_errHandler.recoverInline(this);
46800 					}
46801 					else {
46802 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
46803 						_errHandler.reportMatch(this);
46804 						consume();
46805 					}
46806 					}
46807 				}
46808 
46809 				}
46810 				break;
46811 			default:
46812 				throw new NoViableAltException(this);
46813 			}
46814 		}
46815 		catch (RecognitionException re) {
46816 			_localctx.exception = re;
46817 			_errHandler.reportError(this, re);
46818 			_errHandler.recover(this, re);
46819 		}
46820 		finally {
46821 			exitRule();
46822 		}
46823 		return _localctx;
46824 	}
46825 
46826 	public static class LimitedOptionsListContext extends ParserRuleContext {
46827 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
46828 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
46829 		public SchemaNameContext schemaName() {
46830 			return getRuleContext(SchemaNameContext.class,0);
46831 		}
46832 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
46833 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
46834 		public IdentifierContext identifier() {
46835 			return getRuleContext(IdentifierContext.class,0);
46836 		}
46837 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
46838 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
46839 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
46840 		public LimitedOptionsListContext(ParserRuleContext parent, int invokingState) {
46841 			super(parent, invokingState);
46842 		}
46843 		@Override public int getRuleIndex() { return RULE_limitedOptionsList; }
46844 		@Override
46845 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46846 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLimitedOptionsList(this);
46847 			else return visitor.visitChildren(this);
46848 		}
46849 	}
46850 
46851 	public final LimitedOptionsListContext limitedOptionsList() throws RecognitionException {
46852 		LimitedOptionsListContext _localctx = new LimitedOptionsListContext(_ctx, getState());
46853 		enterRule(_localctx, 880, RULE_limitedOptionsList);
46854 		int _la;
46855 		try {
46856 			setState(6441);
46857 			_errHandler.sync(this);
46858 			switch (_input.LA(1)) {
46859 			case DEFAULT_SCHEMA:
46860 				enterOuterAlt(_localctx, 1);
46861 				{
46862 				setState(6427);
46863 				match(DEFAULT_SCHEMA);
46864 				setState(6428);
46865 				match(EQ_);
46866 				setState(6429);
46867 				schemaName();
46868 				}
46869 				break;
46870 			case DEFAULT_LANGUAGE:
46871 				enterOuterAlt(_localctx, 2);
46872 				{
46873 				setState(6430);
46874 				match(DEFAULT_LANGUAGE);
46875 				setState(6431);
46876 				match(EQ_);
46877 				setState(6434);
46878 				_errHandler.sync(this);
46879 				switch (_input.LA(1)) {
46880 				case NONE:
46881 					{
46882 					setState(6432);
46883 					match(NONE);
46884 					}
46885 					break;
46886 				case TRUNCATE:
46887 				case SCHEMA:
46888 				case FUNCTION:
46889 				case TRIGGER:
46890 				case CAST:
46891 				case GROUP:
46892 				case LIMIT:
46893 				case OFFSET:
46894 				case SAVEPOINT:
46895 				case BOOLEAN:
46896 				case ARRAY:
46897 				case DATE:
46898 				case LOCALTIME:
46899 				case LOCALTIMESTAMP:
46900 				case QUARTER:
46901 				case WEEK:
46902 				case DAY:
46903 				case MICROSECOND:
46904 				case MAX:
46905 				case MIN:
46906 				case SUM:
46907 				case COUNT:
46908 				case AVG:
46909 				case ENABLE:
46910 				case DISABLE:
46911 				case INSTANCE:
46912 				case DO:
46913 				case DEFINER:
46914 				case SQL:
46915 				case CASCADED:
46916 				case LOCAL:
46917 				case NEXT:
46918 				case NAME:
46919 				case INTEGER:
46920 				case TYPE:
46921 				case READ_ONLY:
46922 				case DATABASE:
46923 				case DATEPART:
46924 				case PASSWORD:
46925 				case BINARY:
46926 				case HIDDEN_:
46927 				case MOD:
46928 				case PARTITION:
46929 				case PARTITIONS:
46930 				case TOP:
46931 				case ROW:
46932 				case ROWS:
46933 				case XOR:
46934 				case ALWAYS:
46935 				case ROLE:
46936 				case START:
46937 				case ALGORITHM:
46938 				case AUTO:
46939 				case BLOCKERS:
46940 				case CLUSTERED:
46941 				case NONCLUSTERED:
46942 				case COLUMNSTORE:
46943 				case CONTENT:
46944 				case YEARS:
46945 				case MONTHS:
46946 				case WEEKS:
46947 				case DAYS:
46948 				case MINUTES:
46949 				case DENY:
46950 				case DETERMINISTIC:
46951 				case DISTRIBUTION:
46952 				case DOCUMENT:
46953 				case DURABILITY:
46954 				case ENCRYPTED:
46955 				case FILESTREAM:
46956 				case FILETABLE:
46957 				case FILLFACTOR:
46958 				case FOLLOWING:
46959 				case HASH:
46960 				case HEAP:
46961 				case INBOUND:
46962 				case OUTBOUND:
46963 				case UNBOUNDED:
46964 				case INFINITE:
46965 				case LOGIN:
46966 				case MASKED:
46967 				case MAXDOP:
46968 				case MOVE:
46969 				case NOCHECK:
46970 				case OBJECT:
46971 				case OFF:
46972 				case ONLINE:
46973 				case OVER:
46974 				case PAGE:
46975 				case PAUSED:
46976 				case PERIOD:
46977 				case PERSISTED:
46978 				case PRECEDING:
46979 				case RANDOMIZED:
46980 				case RANGE:
46981 				case REBUILD:
46982 				case REPLICATE:
46983 				case REPLICATION:
46984 				case RESUMABLE:
46985 				case ROWGUIDCOL:
46986 				case SAVE:
46987 				case SELF:
46988 				case SPARSE:
46989 				case SWITCH:
46990 				case TRAN:
46991 				case TRANCOUNT:
46992 				case CONTROL:
46993 				case CONCAT:
46994 				case TAKE:
46995 				case OWNERSHIP:
46996 				case DEFINITION:
46997 				case APPLICATION:
46998 				case ASSEMBLY:
46999 				case SYMMETRIC:
47000 				case ASYMMETRIC:
47001 				case SERVER:
47002 				case RECEIVE:
47003 				case CHANGE:
47004 				case TRACE:
47005 				case TRACKING:
47006 				case RESOURCES:
47007 				case SETTINGS:
47008 				case STATE:
47009 				case AVAILABILITY:
47010 				case CREDENTIAL:
47011 				case ENDPOINT:
47012 				case EVENT:
47013 				case NOTIFICATION:
47014 				case LINKED:
47015 				case AUDIT:
47016 				case DDL:
47017 				case XML:
47018 				case IMPERSONATE:
47019 				case SECURABLES:
47020 				case AUTHENTICATE:
47021 				case EXTERNAL:
47022 				case ACCESS:
47023 				case ADMINISTER:
47024 				case BULK:
47025 				case OPERATIONS:
47026 				case UNSAFE:
47027 				case SHUTDOWN:
47028 				case SCOPED:
47029 				case CONFIGURATION:
47030 				case DATASPACE:
47031 				case SERVICE:
47032 				case CERTIFICATE:
47033 				case CONTRACT:
47034 				case ENCRYPTION:
47035 				case MASTER:
47036 				case DATA:
47037 				case SOURCE:
47038 				case FILE:
47039 				case FORMAT:
47040 				case LIBRARY:
47041 				case FULLTEXT:
47042 				case MASK:
47043 				case UNMASK:
47044 				case MESSAGE:
47045 				case REMOTE:
47046 				case BINDING:
47047 				case ROUTE:
47048 				case SECURITY:
47049 				case POLICY:
47050 				case AGGREGATE:
47051 				case QUEUE:
47052 				case RULE:
47053 				case SYNONYM:
47054 				case COLLECTION:
47055 				case SCRIPT:
47056 				case KILL:
47057 				case BACKUP:
47058 				case LOG:
47059 				case SHOWPLAN:
47060 				case SUBSCRIBE:
47061 				case QUERY:
47062 				case NOTIFICATIONS:
47063 				case CHECKPOINT:
47064 				case SEQUENCE:
47065 				case ABORT_AFTER_WAIT:
47066 				case ALLOW_PAGE_LOCKS:
47067 				case ALLOW_ROW_LOCKS:
47068 				case ALL_SPARSE_COLUMNS:
47069 				case BUCKET_COUNT:
47070 				case COLUMNSTORE_ARCHIVE:
47071 				case COLUMN_ENCRYPTION_KEY:
47072 				case COLUMN_SET:
47073 				case COMPRESSION_DELAY:
47074 				case DATABASE_DEAULT:
47075 				case DATA_COMPRESSION:
47076 				case DATA_CONSISTENCY_CHECK:
47077 				case ENCRYPTION_TYPE:
47078 				case SYSTEM_TIME:
47079 				case SYSTEM_VERSIONING:
47080 				case TEXTIMAGE_ON:
47081 				case WAIT_AT_LOW_PRIORITY:
47082 				case STATISTICS_INCREMENTAL:
47083 				case STATISTICS_NORECOMPUTE:
47084 				case ROUND_ROBIN:
47085 				case SCHEMA_AND_DATA:
47086 				case SCHEMA_ONLY:
47087 				case SORT_IN_TEMPDB:
47088 				case IGNORE_DUP_KEY:
47089 				case IMPLICIT_TRANSACTIONS:
47090 				case MAX_DURATION:
47091 				case MEMORY_OPTIMIZED:
47092 				case MIGRATION_STATE:
47093 				case PAD_INDEX:
47094 				case REMOTE_DATA_ARCHIVE:
47095 				case FILESTREAM_ON:
47096 				case FILETABLE_COLLATE_FILENAME:
47097 				case FILETABLE_DIRECTORY:
47098 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
47099 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
47100 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
47101 				case FILTER_PREDICATE:
47102 				case HISTORY_RETENTION_PERIOD:
47103 				case HISTORY_TABLE:
47104 				case LOCK_ESCALATION:
47105 				case DROP_EXISTING:
47106 				case ROW_NUMBER:
47107 				case FIRST:
47108 				case DATETIME2:
47109 				case OUTPUT:
47110 				case INSERTED:
47111 				case DELETED:
47112 				case FILENAME:
47113 				case MAXSIZE:
47114 				case FILEGROWTH:
47115 				case UNLIMITED:
47116 				case KB:
47117 				case MB:
47118 				case GB:
47119 				case TB:
47120 				case MEMORY_OPTIMIZED_DATA:
47121 				case FILEGROUP:
47122 				case NON_TRANSACTED_ACCESS:
47123 				case DB_CHAINING:
47124 				case TRUSTWORTHY:
47125 				case FORWARD_ONLY:
47126 				case KEYSET:
47127 				case FAST_FORWARD:
47128 				case SCROLL_LOCKS:
47129 				case OPTIMISTIC:
47130 				case TYPE_WARNING:
47131 				case SCHEMABINDING:
47132 				case CALLER:
47133 				case OWNER:
47134 				case SNAPSHOT:
47135 				case REPEATABLE:
47136 				case SERIALIZABLE:
47137 				case NATIVE_COMPILATION:
47138 				case VIEW_METADATA:
47139 				case INSTEAD:
47140 				case APPEND:
47141 				case INCREMENT:
47142 				case CACHE:
47143 				case MINVALUE:
47144 				case MAXVALUE:
47145 				case RESTART:
47146 				case LOB_COMPACTION:
47147 				case COMPRESS_ALL_ROW_GROUPS:
47148 				case REORGANIZE:
47149 				case RESUME:
47150 				case PAUSE:
47151 				case ABORT:
47152 				case ACCELERATED_DATABASE_RECOVERY:
47153 				case PERSISTENT_VERSION_STORE_FILEGROUP:
47154 				case IMMEDIATE:
47155 				case NO_WAIT:
47156 				case TARGET_RECOVERY_TIME:
47157 				case SECONDS:
47158 				case HONOR_BROKER_PRIORITY:
47159 				case ERROR_BROKER_CONVERSATIONS:
47160 				case NEW_BROKER:
47161 				case DISABLE_BROKER:
47162 				case ENABLE_BROKER:
47163 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
47164 				case READ_COMMITTED_SNAPSHOT:
47165 				case ALLOW_SNAPSHOT_ISOLATION:
47166 				case RECURSIVE_TRIGGERS:
47167 				case QUOTED_IDENTIFIER:
47168 				case NUMERIC_ROUNDABORT:
47169 				case CONCAT_NULL_YIELDS_NULL:
47170 				case COMPATIBILITY_LEVEL:
47171 				case ARITHABORT:
47172 				case ANSI_WARNINGS:
47173 				case ANSI_PADDING:
47174 				case ANSI_NULLS:
47175 				case ANSI_NULL_DEFAULT:
47176 				case PAGE_VERIFY:
47177 				case CHECKSUM:
47178 				case TORN_PAGE_DETECTION:
47179 				case BULK_LOGGED:
47180 				case RECOVERY:
47181 				case TOTAL_EXECUTION_CPU_TIME_MS:
47182 				case TOTAL_COMPILE_CPU_TIME_MS:
47183 				case STALE_CAPTURE_POLICY_THRESHOLD:
47184 				case EXECUTION_COUNT:
47185 				case QUERY_CAPTURE_POLICY:
47186 				case WAIT_STATS_CAPTURE_MODE:
47187 				case MAX_PLANS_PER_QUERY:
47188 				case QUERY_CAPTURE_MODE:
47189 				case SIZE_BASED_CLEANUP_MODE:
47190 				case INTERVAL_LENGTH_MINUTES:
47191 				case MAX_STORAGE_SIZE_MB:
47192 				case DATA_FLUSH_INTERVAL_SECONDS:
47193 				case CLEANUP_POLICY:
47194 				case CUSTOM:
47195 				case STALE_QUERY_THRESHOLD_DAYS:
47196 				case OPERATION_MODE:
47197 				case QUERY_STORE:
47198 				case CURSOR_DEFAULT:
47199 				case GLOBAL:
47200 				case CURSOR_CLOSE_ON_COMMIT:
47201 				case HOURS:
47202 				case CHANGE_RETENTION:
47203 				case AUTO_CLEANUP:
47204 				case CHANGE_TRACKING:
47205 				case AUTOMATIC_TUNING:
47206 				case FORCE_LAST_GOOD_PLAN:
47207 				case AUTO_UPDATE_STATISTICS_ASYNC:
47208 				case AUTO_UPDATE_STATISTICS:
47209 				case AUTO_SHRINK:
47210 				case AUTO_CREATE_STATISTICS:
47211 				case INCREMENTAL:
47212 				case AUTO_CLOSE:
47213 				case DATA_RETENTION:
47214 				case TEMPORAL_HISTORY_RETENTION:
47215 				case EDITION:
47216 				case MIXED_PAGE_ALLOCATION:
47217 				case DISABLED:
47218 				case ALLOWED:
47219 				case HADR:
47220 				case MULTI_USER:
47221 				case RESTRICTED_USER:
47222 				case SINGLE_USER:
47223 				case OFFLINE:
47224 				case EMERGENCY:
47225 				case SUSPEND:
47226 				case DATE_CORRELATION_OPTIMIZATION:
47227 				case ELASTIC_POOL:
47228 				case SERVICE_OBJECTIVE:
47229 				case DATABASE_NAME:
47230 				case ALLOW_CONNECTIONS:
47231 				case GEO:
47232 				case NAMED:
47233 				case DATEFIRST:
47234 				case BACKUP_STORAGE_REDUNDANCY:
47235 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
47236 				case SECONDARY:
47237 				case FAILOVER:
47238 				case DEFAULT_FULLTEXT_LANGUAGE:
47239 				case DEFAULT_LANGUAGE:
47240 				case INLINE:
47241 				case NESTED_TRIGGERS:
47242 				case TRANSFORM_NOISE_WORDS:
47243 				case TWO_DIGIT_YEAR_CUTOFF:
47244 				case PERSISTENT_LOG_BUFFER:
47245 				case DIRECTORY_NAME:
47246 				case DATEFORMAT:
47247 				case DELAYED_DURABILITY:
47248 				case AUTHORIZATION:
47249 				case TRANSFER:
47250 				case SEARCH:
47251 				case MEMBER:
47252 				case IDENTIFIER_:
47253 				case DELIMITED_IDENTIFIER_:
47254 					{
47255 					setState(6433);
47256 					identifier();
47257 					}
47258 					break;
47259 				default:
47260 					throw new NoViableAltException(this);
47261 				}
47262 				}
47263 				break;
47264 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
47265 				enterOuterAlt(_localctx, 3);
47266 				{
47267 				setState(6436);
47268 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
47269 				setState(6437);
47270 				match(EQ_);
47271 				setState(6439);
47272 				_errHandler.sync(this);
47273 				_la = _input.LA(1);
47274 				if (_la==ON || _la==OFF) {
47275 					{
47276 					setState(6438);
47277 					_la = _input.LA(1);
47278 					if ( !(_la==ON || _la==OFF) ) {
47279 					_errHandler.recoverInline(this);
47280 					}
47281 					else {
47282 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47283 						_errHandler.reportMatch(this);
47284 						consume();
47285 					}
47286 					}
47287 				}
47288 
47289 				}
47290 				break;
47291 			default:
47292 				throw new NoViableAltException(this);
47293 			}
47294 		}
47295 		catch (RecognitionException re) {
47296 			_localctx.exception = re;
47297 			_errHandler.reportError(this, re);
47298 			_errHandler.recover(this, re);
47299 		}
47300 		finally {
47301 			exitRule();
47302 		}
47303 		return _localctx;
47304 	}
47305 
47306 	public static class CreateUserFromExternalProviderClauseContext extends ParserRuleContext {
47307 		public UserNameContext userName() {
47308 			return getRuleContext(UserNameContext.class,0);
47309 		}
47310 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47311 		public IdentifierContext identifier() {
47312 			return getRuleContext(IdentifierContext.class,0);
47313 		}
47314 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
47315 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
47316 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
47317 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
47318 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47319 		public List<LimitedOptionsListContext> limitedOptionsList() {
47320 			return getRuleContexts(LimitedOptionsListContext.class);
47321 		}
47322 		public LimitedOptionsListContext limitedOptionsList(int i) {
47323 			return getRuleContext(LimitedOptionsListContext.class,i);
47324 		}
47325 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
47326 		public TerminalNode COMMA_(int i) {
47327 			return getToken(SQLServerStatementParser.COMMA_, i);
47328 		}
47329 		public CreateUserFromExternalProviderClauseContext(ParserRuleContext parent, int invokingState) {
47330 			super(parent, invokingState);
47331 		}
47332 		@Override public int getRuleIndex() { return RULE_createUserFromExternalProviderClause; }
47333 		@Override
47334 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47335 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserFromExternalProviderClause(this);
47336 			else return visitor.visitChildren(this);
47337 		}
47338 	}
47339 
47340 	public final CreateUserFromExternalProviderClauseContext createUserFromExternalProviderClause() throws RecognitionException {
47341 		CreateUserFromExternalProviderClauseContext _localctx = new CreateUserFromExternalProviderClauseContext(_ctx, getState());
47342 		enterRule(_localctx, 882, RULE_createUserFromExternalProviderClause);
47343 		int _la;
47344 		try {
47345 			setState(6463);
47346 			_errHandler.sync(this);
47347 			switch (_input.LA(1)) {
47348 			case TRUNCATE:
47349 			case SCHEMA:
47350 			case FUNCTION:
47351 			case TRIGGER:
47352 			case CAST:
47353 			case GROUP:
47354 			case LIMIT:
47355 			case OFFSET:
47356 			case SAVEPOINT:
47357 			case BOOLEAN:
47358 			case ARRAY:
47359 			case DATE:
47360 			case LOCALTIME:
47361 			case LOCALTIMESTAMP:
47362 			case QUARTER:
47363 			case WEEK:
47364 			case DAY:
47365 			case MICROSECOND:
47366 			case MAX:
47367 			case MIN:
47368 			case SUM:
47369 			case COUNT:
47370 			case AVG:
47371 			case ENABLE:
47372 			case DISABLE:
47373 			case INSTANCE:
47374 			case DO:
47375 			case DEFINER:
47376 			case SQL:
47377 			case CASCADED:
47378 			case LOCAL:
47379 			case NEXT:
47380 			case NAME:
47381 			case INTEGER:
47382 			case TYPE:
47383 			case READ_ONLY:
47384 			case DATABASE:
47385 			case DATEPART:
47386 			case PASSWORD:
47387 			case BINARY:
47388 			case HIDDEN_:
47389 			case MOD:
47390 			case PARTITION:
47391 			case PARTITIONS:
47392 			case TOP:
47393 			case ROW:
47394 			case ROWS:
47395 			case XOR:
47396 			case ALWAYS:
47397 			case ROLE:
47398 			case START:
47399 			case ALGORITHM:
47400 			case AUTO:
47401 			case BLOCKERS:
47402 			case CLUSTERED:
47403 			case NONCLUSTERED:
47404 			case COLUMNSTORE:
47405 			case CONTENT:
47406 			case YEARS:
47407 			case MONTHS:
47408 			case WEEKS:
47409 			case DAYS:
47410 			case MINUTES:
47411 			case DENY:
47412 			case DETERMINISTIC:
47413 			case DISTRIBUTION:
47414 			case DOCUMENT:
47415 			case DURABILITY:
47416 			case ENCRYPTED:
47417 			case FILESTREAM:
47418 			case FILETABLE:
47419 			case FILLFACTOR:
47420 			case FOLLOWING:
47421 			case HASH:
47422 			case HEAP:
47423 			case INBOUND:
47424 			case OUTBOUND:
47425 			case UNBOUNDED:
47426 			case INFINITE:
47427 			case LOGIN:
47428 			case MASKED:
47429 			case MAXDOP:
47430 			case MOVE:
47431 			case NOCHECK:
47432 			case OBJECT:
47433 			case OFF:
47434 			case ONLINE:
47435 			case OVER:
47436 			case PAGE:
47437 			case PAUSED:
47438 			case PERIOD:
47439 			case PERSISTED:
47440 			case PRECEDING:
47441 			case RANDOMIZED:
47442 			case RANGE:
47443 			case REBUILD:
47444 			case REPLICATE:
47445 			case REPLICATION:
47446 			case RESUMABLE:
47447 			case ROWGUIDCOL:
47448 			case SAVE:
47449 			case SELF:
47450 			case SPARSE:
47451 			case SWITCH:
47452 			case TRAN:
47453 			case TRANCOUNT:
47454 			case CONTROL:
47455 			case CONCAT:
47456 			case TAKE:
47457 			case OWNERSHIP:
47458 			case DEFINITION:
47459 			case APPLICATION:
47460 			case ASSEMBLY:
47461 			case SYMMETRIC:
47462 			case ASYMMETRIC:
47463 			case SERVER:
47464 			case RECEIVE:
47465 			case CHANGE:
47466 			case TRACE:
47467 			case TRACKING:
47468 			case RESOURCES:
47469 			case SETTINGS:
47470 			case STATE:
47471 			case AVAILABILITY:
47472 			case CREDENTIAL:
47473 			case ENDPOINT:
47474 			case EVENT:
47475 			case NOTIFICATION:
47476 			case LINKED:
47477 			case AUDIT:
47478 			case DDL:
47479 			case XML:
47480 			case IMPERSONATE:
47481 			case SECURABLES:
47482 			case AUTHENTICATE:
47483 			case EXTERNAL:
47484 			case ACCESS:
47485 			case ADMINISTER:
47486 			case BULK:
47487 			case OPERATIONS:
47488 			case UNSAFE:
47489 			case SHUTDOWN:
47490 			case SCOPED:
47491 			case CONFIGURATION:
47492 			case DATASPACE:
47493 			case SERVICE:
47494 			case CERTIFICATE:
47495 			case CONTRACT:
47496 			case ENCRYPTION:
47497 			case MASTER:
47498 			case DATA:
47499 			case SOURCE:
47500 			case FILE:
47501 			case FORMAT:
47502 			case LIBRARY:
47503 			case FULLTEXT:
47504 			case MASK:
47505 			case UNMASK:
47506 			case MESSAGE:
47507 			case REMOTE:
47508 			case BINDING:
47509 			case ROUTE:
47510 			case SECURITY:
47511 			case POLICY:
47512 			case AGGREGATE:
47513 			case QUEUE:
47514 			case RULE:
47515 			case SYNONYM:
47516 			case COLLECTION:
47517 			case SCRIPT:
47518 			case KILL:
47519 			case BACKUP:
47520 			case LOG:
47521 			case SHOWPLAN:
47522 			case SUBSCRIBE:
47523 			case QUERY:
47524 			case NOTIFICATIONS:
47525 			case CHECKPOINT:
47526 			case SEQUENCE:
47527 			case ABORT_AFTER_WAIT:
47528 			case ALLOW_PAGE_LOCKS:
47529 			case ALLOW_ROW_LOCKS:
47530 			case ALL_SPARSE_COLUMNS:
47531 			case BUCKET_COUNT:
47532 			case COLUMNSTORE_ARCHIVE:
47533 			case COLUMN_ENCRYPTION_KEY:
47534 			case COLUMN_SET:
47535 			case COMPRESSION_DELAY:
47536 			case DATABASE_DEAULT:
47537 			case DATA_COMPRESSION:
47538 			case DATA_CONSISTENCY_CHECK:
47539 			case ENCRYPTION_TYPE:
47540 			case SYSTEM_TIME:
47541 			case SYSTEM_VERSIONING:
47542 			case TEXTIMAGE_ON:
47543 			case WAIT_AT_LOW_PRIORITY:
47544 			case STATISTICS_INCREMENTAL:
47545 			case STATISTICS_NORECOMPUTE:
47546 			case ROUND_ROBIN:
47547 			case SCHEMA_AND_DATA:
47548 			case SCHEMA_ONLY:
47549 			case SORT_IN_TEMPDB:
47550 			case IGNORE_DUP_KEY:
47551 			case IMPLICIT_TRANSACTIONS:
47552 			case MAX_DURATION:
47553 			case MEMORY_OPTIMIZED:
47554 			case MIGRATION_STATE:
47555 			case PAD_INDEX:
47556 			case REMOTE_DATA_ARCHIVE:
47557 			case FILESTREAM_ON:
47558 			case FILETABLE_COLLATE_FILENAME:
47559 			case FILETABLE_DIRECTORY:
47560 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
47561 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
47562 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
47563 			case FILTER_PREDICATE:
47564 			case HISTORY_RETENTION_PERIOD:
47565 			case HISTORY_TABLE:
47566 			case LOCK_ESCALATION:
47567 			case DROP_EXISTING:
47568 			case ROW_NUMBER:
47569 			case FIRST:
47570 			case DATETIME2:
47571 			case OUTPUT:
47572 			case INSERTED:
47573 			case DELETED:
47574 			case FILENAME:
47575 			case MAXSIZE:
47576 			case FILEGROWTH:
47577 			case UNLIMITED:
47578 			case KB:
47579 			case MB:
47580 			case GB:
47581 			case TB:
47582 			case MEMORY_OPTIMIZED_DATA:
47583 			case FILEGROUP:
47584 			case NON_TRANSACTED_ACCESS:
47585 			case DB_CHAINING:
47586 			case TRUSTWORTHY:
47587 			case FORWARD_ONLY:
47588 			case KEYSET:
47589 			case FAST_FORWARD:
47590 			case SCROLL_LOCKS:
47591 			case OPTIMISTIC:
47592 			case TYPE_WARNING:
47593 			case SCHEMABINDING:
47594 			case CALLER:
47595 			case OWNER:
47596 			case SNAPSHOT:
47597 			case REPEATABLE:
47598 			case SERIALIZABLE:
47599 			case NATIVE_COMPILATION:
47600 			case VIEW_METADATA:
47601 			case INSTEAD:
47602 			case APPEND:
47603 			case INCREMENT:
47604 			case CACHE:
47605 			case MINVALUE:
47606 			case MAXVALUE:
47607 			case RESTART:
47608 			case LOB_COMPACTION:
47609 			case COMPRESS_ALL_ROW_GROUPS:
47610 			case REORGANIZE:
47611 			case RESUME:
47612 			case PAUSE:
47613 			case ABORT:
47614 			case ACCELERATED_DATABASE_RECOVERY:
47615 			case PERSISTENT_VERSION_STORE_FILEGROUP:
47616 			case IMMEDIATE:
47617 			case NO_WAIT:
47618 			case TARGET_RECOVERY_TIME:
47619 			case SECONDS:
47620 			case HONOR_BROKER_PRIORITY:
47621 			case ERROR_BROKER_CONVERSATIONS:
47622 			case NEW_BROKER:
47623 			case DISABLE_BROKER:
47624 			case ENABLE_BROKER:
47625 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
47626 			case READ_COMMITTED_SNAPSHOT:
47627 			case ALLOW_SNAPSHOT_ISOLATION:
47628 			case RECURSIVE_TRIGGERS:
47629 			case QUOTED_IDENTIFIER:
47630 			case NUMERIC_ROUNDABORT:
47631 			case CONCAT_NULL_YIELDS_NULL:
47632 			case COMPATIBILITY_LEVEL:
47633 			case ARITHABORT:
47634 			case ANSI_WARNINGS:
47635 			case ANSI_PADDING:
47636 			case ANSI_NULLS:
47637 			case ANSI_NULL_DEFAULT:
47638 			case PAGE_VERIFY:
47639 			case CHECKSUM:
47640 			case TORN_PAGE_DETECTION:
47641 			case BULK_LOGGED:
47642 			case RECOVERY:
47643 			case TOTAL_EXECUTION_CPU_TIME_MS:
47644 			case TOTAL_COMPILE_CPU_TIME_MS:
47645 			case STALE_CAPTURE_POLICY_THRESHOLD:
47646 			case EXECUTION_COUNT:
47647 			case QUERY_CAPTURE_POLICY:
47648 			case WAIT_STATS_CAPTURE_MODE:
47649 			case MAX_PLANS_PER_QUERY:
47650 			case QUERY_CAPTURE_MODE:
47651 			case SIZE_BASED_CLEANUP_MODE:
47652 			case INTERVAL_LENGTH_MINUTES:
47653 			case MAX_STORAGE_SIZE_MB:
47654 			case DATA_FLUSH_INTERVAL_SECONDS:
47655 			case CLEANUP_POLICY:
47656 			case CUSTOM:
47657 			case STALE_QUERY_THRESHOLD_DAYS:
47658 			case OPERATION_MODE:
47659 			case QUERY_STORE:
47660 			case CURSOR_DEFAULT:
47661 			case GLOBAL:
47662 			case CURSOR_CLOSE_ON_COMMIT:
47663 			case HOURS:
47664 			case CHANGE_RETENTION:
47665 			case AUTO_CLEANUP:
47666 			case CHANGE_TRACKING:
47667 			case AUTOMATIC_TUNING:
47668 			case FORCE_LAST_GOOD_PLAN:
47669 			case AUTO_UPDATE_STATISTICS_ASYNC:
47670 			case AUTO_UPDATE_STATISTICS:
47671 			case AUTO_SHRINK:
47672 			case AUTO_CREATE_STATISTICS:
47673 			case INCREMENTAL:
47674 			case AUTO_CLOSE:
47675 			case DATA_RETENTION:
47676 			case TEMPORAL_HISTORY_RETENTION:
47677 			case EDITION:
47678 			case MIXED_PAGE_ALLOCATION:
47679 			case DISABLED:
47680 			case ALLOWED:
47681 			case HADR:
47682 			case MULTI_USER:
47683 			case RESTRICTED_USER:
47684 			case SINGLE_USER:
47685 			case OFFLINE:
47686 			case EMERGENCY:
47687 			case SUSPEND:
47688 			case DATE_CORRELATION_OPTIMIZATION:
47689 			case ELASTIC_POOL:
47690 			case SERVICE_OBJECTIVE:
47691 			case DATABASE_NAME:
47692 			case ALLOW_CONNECTIONS:
47693 			case GEO:
47694 			case NAMED:
47695 			case DATEFIRST:
47696 			case BACKUP_STORAGE_REDUNDANCY:
47697 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
47698 			case SECONDARY:
47699 			case FAILOVER:
47700 			case DEFAULT_FULLTEXT_LANGUAGE:
47701 			case DEFAULT_LANGUAGE:
47702 			case INLINE:
47703 			case NESTED_TRIGGERS:
47704 			case TRANSFORM_NOISE_WORDS:
47705 			case TWO_DIGIT_YEAR_CUTOFF:
47706 			case PERSISTENT_LOG_BUFFER:
47707 			case DIRECTORY_NAME:
47708 			case DATEFORMAT:
47709 			case DELAYED_DURABILITY:
47710 			case AUTHORIZATION:
47711 			case TRANSFER:
47712 			case SEARCH:
47713 			case MEMBER:
47714 			case IDENTIFIER_:
47715 			case DELIMITED_IDENTIFIER_:
47716 				enterOuterAlt(_localctx, 1);
47717 				{
47718 				setState(6443);
47719 				userName();
47720 				setState(6447);
47721 				_errHandler.sync(this);
47722 				_la = _input.LA(1);
47723 				if (_la==FROM || _la==FOR) {
47724 					{
47725 					setState(6444);
47726 					_la = _input.LA(1);
47727 					if ( !(_la==FROM || _la==FOR) ) {
47728 					_errHandler.recoverInline(this);
47729 					}
47730 					else {
47731 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47732 						_errHandler.reportMatch(this);
47733 						consume();
47734 					}
47735 					setState(6445);
47736 					match(LOGIN);
47737 					setState(6446);
47738 					identifier();
47739 					}
47740 				}
47741 
47742 				}
47743 				break;
47744 			case FROM:
47745 				enterOuterAlt(_localctx, 2);
47746 				{
47747 				setState(6449);
47748 				match(FROM);
47749 				setState(6450);
47750 				match(EXTERNAL);
47751 				setState(6451);
47752 				match(PROVIDER);
47753 				setState(6461);
47754 				_errHandler.sync(this);
47755 				_la = _input.LA(1);
47756 				if (_la==WITH) {
47757 					{
47758 					setState(6452);
47759 					match(WITH);
47760 					setState(6453);
47761 					limitedOptionsList();
47762 					setState(6458);
47763 					_errHandler.sync(this);
47764 					_la = _input.LA(1);
47765 					while (_la==COMMA_) {
47766 						{
47767 						{
47768 						setState(6454);
47769 						match(COMMA_);
47770 						setState(6455);
47771 						limitedOptionsList();
47772 						}
47773 						}
47774 						setState(6460);
47775 						_errHandler.sync(this);
47776 						_la = _input.LA(1);
47777 					}
47778 					}
47779 				}
47780 
47781 				}
47782 				break;
47783 			default:
47784 				throw new NoViableAltException(this);
47785 			}
47786 		}
47787 		catch (RecognitionException re) {
47788 			_localctx.exception = re;
47789 			_errHandler.reportError(this, re);
47790 			_errHandler.recover(this, re);
47791 		}
47792 		finally {
47793 			exitRule();
47794 		}
47795 		return _localctx;
47796 	}
47797 
47798 	public static class CreateUserWithDefaultSchemaContext extends ParserRuleContext {
47799 		public UserNameContext userName() {
47800 			return getRuleContext(UserNameContext.class,0);
47801 		}
47802 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47803 		public IdentifierContext identifier() {
47804 			return getRuleContext(IdentifierContext.class,0);
47805 		}
47806 		public TerminalNode WITHOUT() { return getToken(SQLServerStatementParser.WITHOUT, 0); }
47807 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47808 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
47809 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
47810 		public SchemaNameContext schemaName() {
47811 			return getRuleContext(SchemaNameContext.class,0);
47812 		}
47813 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
47814 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
47815 		public CreateUserWithDefaultSchemaContext(ParserRuleContext parent, int invokingState) {
47816 			super(parent, invokingState);
47817 		}
47818 		@Override public int getRuleIndex() { return RULE_createUserWithDefaultSchema; }
47819 		@Override
47820 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47821 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithDefaultSchema(this);
47822 			else return visitor.visitChildren(this);
47823 		}
47824 	}
47825 
47826 	public final CreateUserWithDefaultSchemaContext createUserWithDefaultSchema() throws RecognitionException {
47827 		CreateUserWithDefaultSchemaContext _localctx = new CreateUserWithDefaultSchemaContext(_ctx, getState());
47828 		enterRule(_localctx, 884, RULE_createUserWithDefaultSchema);
47829 		int _la;
47830 		try {
47831 			enterOuterAlt(_localctx, 1);
47832 			{
47833 			setState(6465);
47834 			userName();
47835 			setState(6471);
47836 			_errHandler.sync(this);
47837 			switch (_input.LA(1)) {
47838 			case FROM:
47839 			case FOR:
47840 				{
47841 				setState(6466);
47842 				_la = _input.LA(1);
47843 				if ( !(_la==FROM || _la==FOR) ) {
47844 				_errHandler.recoverInline(this);
47845 				}
47846 				else {
47847 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47848 					_errHandler.reportMatch(this);
47849 					consume();
47850 				}
47851 				setState(6467);
47852 				match(LOGIN);
47853 				setState(6468);
47854 				identifier();
47855 				}
47856 				break;
47857 			case WITHOUT:
47858 				{
47859 				setState(6469);
47860 				match(WITHOUT);
47861 				setState(6470);
47862 				match(LOGIN);
47863 				}
47864 				break;
47865 			case EOF:
47866 			case SEMI_:
47867 			case WITH:
47868 				break;
47869 			default:
47870 				break;
47871 			}
47872 			setState(6477);
47873 			_errHandler.sync(this);
47874 			_la = _input.LA(1);
47875 			if (_la==WITH) {
47876 				{
47877 				setState(6473);
47878 				match(WITH);
47879 				setState(6474);
47880 				match(DEFAULT_SCHEMA);
47881 				setState(6475);
47882 				match(EQ_);
47883 				setState(6476);
47884 				schemaName();
47885 				}
47886 			}
47887 
47888 			}
47889 		}
47890 		catch (RecognitionException re) {
47891 			_localctx.exception = re;
47892 			_errHandler.reportError(this, re);
47893 			_errHandler.recover(this, re);
47894 		}
47895 		finally {
47896 			exitRule();
47897 		}
47898 		return _localctx;
47899 	}
47900 
47901 	public static class CreateUserWithAzureActiveDirectoryPrincipalClauseContext extends ParserRuleContext {
47902 		public AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() {
47903 			return getRuleContext(AzureActiveDirectoryPrincipalContext.class,0);
47904 		}
47905 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
47906 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
47907 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
47908 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47909 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
47910 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
47911 		public SchemaNameContext schemaName() {
47912 			return getRuleContext(SchemaNameContext.class,0);
47913 		}
47914 		public CreateUserWithAzureActiveDirectoryPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
47915 			super(parent, invokingState);
47916 		}
47917 		@Override public int getRuleIndex() { return RULE_createUserWithAzureActiveDirectoryPrincipalClause; }
47918 		@Override
47919 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47920 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithAzureActiveDirectoryPrincipalClause(this);
47921 			else return visitor.visitChildren(this);
47922 		}
47923 	}
47924 
47925 	public final CreateUserWithAzureActiveDirectoryPrincipalClauseContext createUserWithAzureActiveDirectoryPrincipalClause() throws RecognitionException {
47926 		CreateUserWithAzureActiveDirectoryPrincipalClauseContext _localctx = new CreateUserWithAzureActiveDirectoryPrincipalClauseContext(_ctx, getState());
47927 		enterRule(_localctx, 886, RULE_createUserWithAzureActiveDirectoryPrincipalClause);
47928 		int _la;
47929 		try {
47930 			enterOuterAlt(_localctx, 1);
47931 			{
47932 			setState(6479);
47933 			azureActiveDirectoryPrincipal();
47934 			setState(6480);
47935 			match(FROM);
47936 			setState(6481);
47937 			match(EXTERNAL);
47938 			setState(6482);
47939 			match(PROVIDER);
47940 			setState(6487);
47941 			_errHandler.sync(this);
47942 			_la = _input.LA(1);
47943 			if (_la==WITH) {
47944 				{
47945 				setState(6483);
47946 				match(WITH);
47947 				setState(6484);
47948 				match(DEFAULT_SCHEMA);
47949 				setState(6485);
47950 				match(EQ_);
47951 				setState(6486);
47952 				schemaName();
47953 				}
47954 			}
47955 
47956 			}
47957 		}
47958 		catch (RecognitionException re) {
47959 			_localctx.exception = re;
47960 			_errHandler.reportError(this, re);
47961 			_errHandler.recover(this, re);
47962 		}
47963 		finally {
47964 			exitRule();
47965 		}
47966 		return _localctx;
47967 	}
47968 
47969 	public static class WindowsPrincipalContext extends ParserRuleContext {
47970 		public UserNameContext userName() {
47971 			return getRuleContext(UserNameContext.class,0);
47972 		}
47973 		public WindowsPrincipalContext(ParserRuleContext parent, int invokingState) {
47974 			super(parent, invokingState);
47975 		}
47976 		@Override public int getRuleIndex() { return RULE_windowsPrincipal; }
47977 		@Override
47978 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47979 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowsPrincipal(this);
47980 			else return visitor.visitChildren(this);
47981 		}
47982 	}
47983 
47984 	public final WindowsPrincipalContext windowsPrincipal() throws RecognitionException {
47985 		WindowsPrincipalContext _localctx = new WindowsPrincipalContext(_ctx, getState());
47986 		enterRule(_localctx, 888, RULE_windowsPrincipal);
47987 		try {
47988 			enterOuterAlt(_localctx, 1);
47989 			{
47990 			setState(6489);
47991 			userName();
47992 			}
47993 		}
47994 		catch (RecognitionException re) {
47995 			_localctx.exception = re;
47996 			_errHandler.reportError(this, re);
47997 			_errHandler.recover(this, re);
47998 		}
47999 		finally {
48000 			exitRule();
48001 		}
48002 		return _localctx;
48003 	}
48004 
48005 	public static class AzureActiveDirectoryPrincipalContext extends ParserRuleContext {
48006 		public UserNameContext userName() {
48007 			return getRuleContext(UserNameContext.class,0);
48008 		}
48009 		public AzureActiveDirectoryPrincipalContext(ParserRuleContext parent, int invokingState) {
48010 			super(parent, invokingState);
48011 		}
48012 		@Override public int getRuleIndex() { return RULE_azureActiveDirectoryPrincipal; }
48013 		@Override
48014 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48015 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAzureActiveDirectoryPrincipal(this);
48016 			else return visitor.visitChildren(this);
48017 		}
48018 	}
48019 
48020 	public final AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() throws RecognitionException {
48021 		AzureActiveDirectoryPrincipalContext _localctx = new AzureActiveDirectoryPrincipalContext(_ctx, getState());
48022 		enterRule(_localctx, 890, RULE_azureActiveDirectoryPrincipal);
48023 		try {
48024 			enterOuterAlt(_localctx, 1);
48025 			{
48026 			setState(6491);
48027 			userName();
48028 			}
48029 		}
48030 		catch (RecognitionException re) {
48031 			_localctx.exception = re;
48032 			_errHandler.reportError(this, re);
48033 			_errHandler.recover(this, re);
48034 		}
48035 		finally {
48036 			exitRule();
48037 		}
48038 		return _localctx;
48039 	}
48040 
48041 	public static class UserNameContext extends ParserRuleContext {
48042 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
48043 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
48044 		}
48045 		public UserNameContext(ParserRuleContext parent, int invokingState) {
48046 			super(parent, invokingState);
48047 		}
48048 		@Override public int getRuleIndex() { return RULE_userName; }
48049 		@Override
48050 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48051 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUserName(this);
48052 			else return visitor.visitChildren(this);
48053 		}
48054 	}
48055 
48056 	public final UserNameContext userName() throws RecognitionException {
48057 		UserNameContext _localctx = new UserNameContext(_ctx, getState());
48058 		enterRule(_localctx, 892, RULE_userName);
48059 		try {
48060 			enterOuterAlt(_localctx, 1);
48061 			{
48062 			setState(6493);
48063 			ignoredNameIdentifier();
48064 			}
48065 		}
48066 		catch (RecognitionException re) {
48067 			_localctx.exception = re;
48068 			_errHandler.reportError(this, re);
48069 			_errHandler.recover(this, re);
48070 		}
48071 		finally {
48072 			exitRule();
48073 		}
48074 		return _localctx;
48075 	}
48076 
48077 	public static class IgnoredNameIdentifierContext extends ParserRuleContext {
48078 		public List<IdentifierContext> identifier() {
48079 			return getRuleContexts(IdentifierContext.class);
48080 		}
48081 		public IdentifierContext identifier(int i) {
48082 			return getRuleContext(IdentifierContext.class,i);
48083 		}
48084 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
48085 		public IgnoredNameIdentifierContext(ParserRuleContext parent, int invokingState) {
48086 			super(parent, invokingState);
48087 		}
48088 		@Override public int getRuleIndex() { return RULE_ignoredNameIdentifier; }
48089 		@Override
48090 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48091 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredNameIdentifier(this);
48092 			else return visitor.visitChildren(this);
48093 		}
48094 	}
48095 
48096 	public final IgnoredNameIdentifierContext ignoredNameIdentifier() throws RecognitionException {
48097 		IgnoredNameIdentifierContext _localctx = new IgnoredNameIdentifierContext(_ctx, getState());
48098 		enterRule(_localctx, 894, RULE_ignoredNameIdentifier);
48099 		int _la;
48100 		try {
48101 			enterOuterAlt(_localctx, 1);
48102 			{
48103 			setState(6495);
48104 			identifier();
48105 			setState(6498);
48106 			_errHandler.sync(this);
48107 			_la = _input.LA(1);
48108 			if (_la==DOT_) {
48109 				{
48110 				setState(6496);
48111 				match(DOT_);
48112 				setState(6497);
48113 				identifier();
48114 				}
48115 			}
48116 
48117 			}
48118 		}
48119 		catch (RecognitionException re) {
48120 			_localctx.exception = re;
48121 			_errHandler.reportError(this, re);
48122 			_errHandler.recover(this, re);
48123 		}
48124 		finally {
48125 			exitRule();
48126 		}
48127 		return _localctx;
48128 	}
48129 
48130 	public static class DropUserContext extends ParserRuleContext {
48131 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
48132 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
48133 		public UserNameContext userName() {
48134 			return getRuleContext(UserNameContext.class,0);
48135 		}
48136 		public IfExistsContext ifExists() {
48137 			return getRuleContext(IfExistsContext.class,0);
48138 		}
48139 		public DropUserContext(ParserRuleContext parent, int invokingState) {
48140 			super(parent, invokingState);
48141 		}
48142 		@Override public int getRuleIndex() { return RULE_dropUser; }
48143 		@Override
48144 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48145 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropUser(this);
48146 			else return visitor.visitChildren(this);
48147 		}
48148 	}
48149 
48150 	public final DropUserContext dropUser() throws RecognitionException {
48151 		DropUserContext _localctx = new DropUserContext(_ctx, getState());
48152 		enterRule(_localctx, 896, RULE_dropUser);
48153 		int _la;
48154 		try {
48155 			enterOuterAlt(_localctx, 1);
48156 			{
48157 			setState(6500);
48158 			match(DROP);
48159 			setState(6501);
48160 			match(USER);
48161 			setState(6503);
48162 			_errHandler.sync(this);
48163 			_la = _input.LA(1);
48164 			if (_la==IF) {
48165 				{
48166 				setState(6502);
48167 				ifExists();
48168 				}
48169 			}
48170 
48171 			setState(6505);
48172 			userName();
48173 			}
48174 		}
48175 		catch (RecognitionException re) {
48176 			_localctx.exception = re;
48177 			_errHandler.reportError(this, re);
48178 			_errHandler.recover(this, re);
48179 		}
48180 		finally {
48181 			exitRule();
48182 		}
48183 		return _localctx;
48184 	}
48185 
48186 	public static class AlterUserContext extends ParserRuleContext {
48187 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
48188 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
48189 		public UserNameContext userName() {
48190 			return getRuleContext(UserNameContext.class,0);
48191 		}
48192 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48193 		public List<SetItemContext> setItem() {
48194 			return getRuleContexts(SetItemContext.class);
48195 		}
48196 		public SetItemContext setItem(int i) {
48197 			return getRuleContext(SetItemContext.class,i);
48198 		}
48199 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48200 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
48201 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
48202 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
48203 		public TerminalNode COMMA_(int i) {
48204 			return getToken(SQLServerStatementParser.COMMA_, i);
48205 		}
48206 		public AlterUserContext(ParserRuleContext parent, int invokingState) {
48207 			super(parent, invokingState);
48208 		}
48209 		@Override public int getRuleIndex() { return RULE_alterUser; }
48210 		@Override
48211 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48212 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterUser(this);
48213 			else return visitor.visitChildren(this);
48214 		}
48215 	}
48216 
48217 	public final AlterUserContext alterUser() throws RecognitionException {
48218 		AlterUserContext _localctx = new AlterUserContext(_ctx, getState());
48219 		enterRule(_localctx, 898, RULE_alterUser);
48220 		int _la;
48221 		try {
48222 			enterOuterAlt(_localctx, 1);
48223 			{
48224 			setState(6507);
48225 			match(ALTER);
48226 			setState(6508);
48227 			match(USER);
48228 			setState(6509);
48229 			userName();
48230 			setState(6522);
48231 			_errHandler.sync(this);
48232 			switch (_input.LA(1)) {
48233 			case WITH:
48234 				{
48235 				setState(6510);
48236 				match(WITH);
48237 				setState(6511);
48238 				setItem();
48239 				setState(6516);
48240 				_errHandler.sync(this);
48241 				_la = _input.LA(1);
48242 				while (_la==COMMA_) {
48243 					{
48244 					{
48245 					setState(6512);
48246 					match(COMMA_);
48247 					setState(6513);
48248 					setItem();
48249 					}
48250 					}
48251 					setState(6518);
48252 					_errHandler.sync(this);
48253 					_la = _input.LA(1);
48254 				}
48255 				}
48256 				break;
48257 			case FROM:
48258 				{
48259 				setState(6519);
48260 				match(FROM);
48261 				setState(6520);
48262 				match(EXTERNAL);
48263 				setState(6521);
48264 				match(PROVIDER);
48265 				}
48266 				break;
48267 			default:
48268 				throw new NoViableAltException(this);
48269 			}
48270 			}
48271 		}
48272 		catch (RecognitionException re) {
48273 			_localctx.exception = re;
48274 			_errHandler.reportError(this, re);
48275 			_errHandler.recover(this, re);
48276 		}
48277 		finally {
48278 			exitRule();
48279 		}
48280 		return _localctx;
48281 	}
48282 
48283 	public static class SetItemContext extends ParserRuleContext {
48284 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
48285 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
48286 		public TerminalNode EQ_(int i) {
48287 			return getToken(SQLServerStatementParser.EQ_, i);
48288 		}
48289 		public UserNameContext userName() {
48290 			return getRuleContext(UserNameContext.class,0);
48291 		}
48292 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
48293 		public SchemaNameContext schemaName() {
48294 			return getRuleContext(SchemaNameContext.class,0);
48295 		}
48296 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
48297 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
48298 		public IdentifierContext identifier() {
48299 			return getRuleContext(IdentifierContext.class,0);
48300 		}
48301 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
48302 		public List<StringLiteralsContext> stringLiterals() {
48303 			return getRuleContexts(StringLiteralsContext.class);
48304 		}
48305 		public StringLiteralsContext stringLiterals(int i) {
48306 			return getRuleContext(StringLiteralsContext.class,i);
48307 		}
48308 		public TerminalNode OLD_PASSWORD() { return getToken(SQLServerStatementParser.OLD_PASSWORD, 0); }
48309 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
48310 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
48311 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
48312 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
48313 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
48314 		public SetItemContext(ParserRuleContext parent, int invokingState) {
48315 			super(parent, invokingState);
48316 		}
48317 		@Override public int getRuleIndex() { return RULE_setItem; }
48318 		@Override
48319 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48320 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetItem(this);
48321 			else return visitor.visitChildren(this);
48322 		}
48323 	}
48324 
48325 	public final SetItemContext setItem() throws RecognitionException {
48326 		SetItemContext _localctx = new SetItemContext(_ctx, getState());
48327 		enterRule(_localctx, 900, RULE_setItem);
48328 		int _la;
48329 		try {
48330 			setState(6555);
48331 			_errHandler.sync(this);
48332 			switch (_input.LA(1)) {
48333 			case NAME:
48334 				enterOuterAlt(_localctx, 1);
48335 				{
48336 				setState(6524);
48337 				match(NAME);
48338 				setState(6525);
48339 				match(EQ_);
48340 				setState(6526);
48341 				userName();
48342 				}
48343 				break;
48344 			case DEFAULT_SCHEMA:
48345 				enterOuterAlt(_localctx, 2);
48346 				{
48347 				setState(6527);
48348 				match(DEFAULT_SCHEMA);
48349 				setState(6528);
48350 				match(EQ_);
48351 				setState(6531);
48352 				_errHandler.sync(this);
48353 				switch (_input.LA(1)) {
48354 				case TRUNCATE:
48355 				case SCHEMA:
48356 				case FUNCTION:
48357 				case TRIGGER:
48358 				case CAST:
48359 				case GROUP:
48360 				case LIMIT:
48361 				case OFFSET:
48362 				case SAVEPOINT:
48363 				case BOOLEAN:
48364 				case ARRAY:
48365 				case DATE:
48366 				case LOCALTIME:
48367 				case LOCALTIMESTAMP:
48368 				case QUARTER:
48369 				case WEEK:
48370 				case DAY:
48371 				case MICROSECOND:
48372 				case MAX:
48373 				case MIN:
48374 				case SUM:
48375 				case COUNT:
48376 				case AVG:
48377 				case ENABLE:
48378 				case DISABLE:
48379 				case INSTANCE:
48380 				case DO:
48381 				case DEFINER:
48382 				case SQL:
48383 				case CASCADED:
48384 				case LOCAL:
48385 				case NEXT:
48386 				case NAME:
48387 				case INTEGER:
48388 				case TYPE:
48389 				case READ_ONLY:
48390 				case DATABASE:
48391 				case DATEPART:
48392 				case PASSWORD:
48393 				case BINARY:
48394 				case HIDDEN_:
48395 				case MOD:
48396 				case PARTITION:
48397 				case PARTITIONS:
48398 				case TOP:
48399 				case ROW:
48400 				case ROWS:
48401 				case XOR:
48402 				case ALWAYS:
48403 				case ROLE:
48404 				case START:
48405 				case ALGORITHM:
48406 				case AUTO:
48407 				case BLOCKERS:
48408 				case CLUSTERED:
48409 				case NONCLUSTERED:
48410 				case COLUMNSTORE:
48411 				case CONTENT:
48412 				case YEARS:
48413 				case MONTHS:
48414 				case WEEKS:
48415 				case DAYS:
48416 				case MINUTES:
48417 				case DENY:
48418 				case DETERMINISTIC:
48419 				case DISTRIBUTION:
48420 				case DOCUMENT:
48421 				case DURABILITY:
48422 				case ENCRYPTED:
48423 				case FILESTREAM:
48424 				case FILETABLE:
48425 				case FILLFACTOR:
48426 				case FOLLOWING:
48427 				case HASH:
48428 				case HEAP:
48429 				case INBOUND:
48430 				case OUTBOUND:
48431 				case UNBOUNDED:
48432 				case INFINITE:
48433 				case LOGIN:
48434 				case MASKED:
48435 				case MAXDOP:
48436 				case MOVE:
48437 				case NOCHECK:
48438 				case OBJECT:
48439 				case OFF:
48440 				case ONLINE:
48441 				case OVER:
48442 				case PAGE:
48443 				case PAUSED:
48444 				case PERIOD:
48445 				case PERSISTED:
48446 				case PRECEDING:
48447 				case RANDOMIZED:
48448 				case RANGE:
48449 				case REBUILD:
48450 				case REPLICATE:
48451 				case REPLICATION:
48452 				case RESUMABLE:
48453 				case ROWGUIDCOL:
48454 				case SAVE:
48455 				case SELF:
48456 				case SPARSE:
48457 				case SWITCH:
48458 				case TRAN:
48459 				case TRANCOUNT:
48460 				case CONTROL:
48461 				case CONCAT:
48462 				case TAKE:
48463 				case OWNERSHIP:
48464 				case DEFINITION:
48465 				case APPLICATION:
48466 				case ASSEMBLY:
48467 				case SYMMETRIC:
48468 				case ASYMMETRIC:
48469 				case SERVER:
48470 				case RECEIVE:
48471 				case CHANGE:
48472 				case TRACE:
48473 				case TRACKING:
48474 				case RESOURCES:
48475 				case SETTINGS:
48476 				case STATE:
48477 				case AVAILABILITY:
48478 				case CREDENTIAL:
48479 				case ENDPOINT:
48480 				case EVENT:
48481 				case NOTIFICATION:
48482 				case LINKED:
48483 				case AUDIT:
48484 				case DDL:
48485 				case XML:
48486 				case IMPERSONATE:
48487 				case SECURABLES:
48488 				case AUTHENTICATE:
48489 				case EXTERNAL:
48490 				case ACCESS:
48491 				case ADMINISTER:
48492 				case BULK:
48493 				case OPERATIONS:
48494 				case UNSAFE:
48495 				case SHUTDOWN:
48496 				case SCOPED:
48497 				case CONFIGURATION:
48498 				case DATASPACE:
48499 				case SERVICE:
48500 				case CERTIFICATE:
48501 				case CONTRACT:
48502 				case ENCRYPTION:
48503 				case MASTER:
48504 				case DATA:
48505 				case SOURCE:
48506 				case FILE:
48507 				case FORMAT:
48508 				case LIBRARY:
48509 				case FULLTEXT:
48510 				case MASK:
48511 				case UNMASK:
48512 				case MESSAGE:
48513 				case REMOTE:
48514 				case BINDING:
48515 				case ROUTE:
48516 				case SECURITY:
48517 				case POLICY:
48518 				case AGGREGATE:
48519 				case QUEUE:
48520 				case RULE:
48521 				case SYNONYM:
48522 				case COLLECTION:
48523 				case SCRIPT:
48524 				case KILL:
48525 				case BACKUP:
48526 				case LOG:
48527 				case SHOWPLAN:
48528 				case SUBSCRIBE:
48529 				case QUERY:
48530 				case NOTIFICATIONS:
48531 				case CHECKPOINT:
48532 				case SEQUENCE:
48533 				case ABORT_AFTER_WAIT:
48534 				case ALLOW_PAGE_LOCKS:
48535 				case ALLOW_ROW_LOCKS:
48536 				case ALL_SPARSE_COLUMNS:
48537 				case BUCKET_COUNT:
48538 				case COLUMNSTORE_ARCHIVE:
48539 				case COLUMN_ENCRYPTION_KEY:
48540 				case COLUMN_SET:
48541 				case COMPRESSION_DELAY:
48542 				case DATABASE_DEAULT:
48543 				case DATA_COMPRESSION:
48544 				case DATA_CONSISTENCY_CHECK:
48545 				case ENCRYPTION_TYPE:
48546 				case SYSTEM_TIME:
48547 				case SYSTEM_VERSIONING:
48548 				case TEXTIMAGE_ON:
48549 				case WAIT_AT_LOW_PRIORITY:
48550 				case STATISTICS_INCREMENTAL:
48551 				case STATISTICS_NORECOMPUTE:
48552 				case ROUND_ROBIN:
48553 				case SCHEMA_AND_DATA:
48554 				case SCHEMA_ONLY:
48555 				case SORT_IN_TEMPDB:
48556 				case IGNORE_DUP_KEY:
48557 				case IMPLICIT_TRANSACTIONS:
48558 				case MAX_DURATION:
48559 				case MEMORY_OPTIMIZED:
48560 				case MIGRATION_STATE:
48561 				case PAD_INDEX:
48562 				case REMOTE_DATA_ARCHIVE:
48563 				case FILESTREAM_ON:
48564 				case FILETABLE_COLLATE_FILENAME:
48565 				case FILETABLE_DIRECTORY:
48566 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
48567 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
48568 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
48569 				case FILTER_PREDICATE:
48570 				case HISTORY_RETENTION_PERIOD:
48571 				case HISTORY_TABLE:
48572 				case LOCK_ESCALATION:
48573 				case DROP_EXISTING:
48574 				case ROW_NUMBER:
48575 				case FIRST:
48576 				case DATETIME2:
48577 				case OUTPUT:
48578 				case INSERTED:
48579 				case DELETED:
48580 				case FILENAME:
48581 				case MAXSIZE:
48582 				case FILEGROWTH:
48583 				case UNLIMITED:
48584 				case KB:
48585 				case MB:
48586 				case GB:
48587 				case TB:
48588 				case MEMORY_OPTIMIZED_DATA:
48589 				case FILEGROUP:
48590 				case NON_TRANSACTED_ACCESS:
48591 				case DB_CHAINING:
48592 				case TRUSTWORTHY:
48593 				case FORWARD_ONLY:
48594 				case KEYSET:
48595 				case FAST_FORWARD:
48596 				case SCROLL_LOCKS:
48597 				case OPTIMISTIC:
48598 				case TYPE_WARNING:
48599 				case SCHEMABINDING:
48600 				case CALLER:
48601 				case OWNER:
48602 				case SNAPSHOT:
48603 				case REPEATABLE:
48604 				case SERIALIZABLE:
48605 				case NATIVE_COMPILATION:
48606 				case VIEW_METADATA:
48607 				case INSTEAD:
48608 				case APPEND:
48609 				case INCREMENT:
48610 				case CACHE:
48611 				case MINVALUE:
48612 				case MAXVALUE:
48613 				case RESTART:
48614 				case LOB_COMPACTION:
48615 				case COMPRESS_ALL_ROW_GROUPS:
48616 				case REORGANIZE:
48617 				case RESUME:
48618 				case PAUSE:
48619 				case ABORT:
48620 				case ACCELERATED_DATABASE_RECOVERY:
48621 				case PERSISTENT_VERSION_STORE_FILEGROUP:
48622 				case IMMEDIATE:
48623 				case NO_WAIT:
48624 				case TARGET_RECOVERY_TIME:
48625 				case SECONDS:
48626 				case HONOR_BROKER_PRIORITY:
48627 				case ERROR_BROKER_CONVERSATIONS:
48628 				case NEW_BROKER:
48629 				case DISABLE_BROKER:
48630 				case ENABLE_BROKER:
48631 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
48632 				case READ_COMMITTED_SNAPSHOT:
48633 				case ALLOW_SNAPSHOT_ISOLATION:
48634 				case RECURSIVE_TRIGGERS:
48635 				case QUOTED_IDENTIFIER:
48636 				case NUMERIC_ROUNDABORT:
48637 				case CONCAT_NULL_YIELDS_NULL:
48638 				case COMPATIBILITY_LEVEL:
48639 				case ARITHABORT:
48640 				case ANSI_WARNINGS:
48641 				case ANSI_PADDING:
48642 				case ANSI_NULLS:
48643 				case ANSI_NULL_DEFAULT:
48644 				case PAGE_VERIFY:
48645 				case CHECKSUM:
48646 				case TORN_PAGE_DETECTION:
48647 				case BULK_LOGGED:
48648 				case RECOVERY:
48649 				case TOTAL_EXECUTION_CPU_TIME_MS:
48650 				case TOTAL_COMPILE_CPU_TIME_MS:
48651 				case STALE_CAPTURE_POLICY_THRESHOLD:
48652 				case EXECUTION_COUNT:
48653 				case QUERY_CAPTURE_POLICY:
48654 				case WAIT_STATS_CAPTURE_MODE:
48655 				case MAX_PLANS_PER_QUERY:
48656 				case QUERY_CAPTURE_MODE:
48657 				case SIZE_BASED_CLEANUP_MODE:
48658 				case INTERVAL_LENGTH_MINUTES:
48659 				case MAX_STORAGE_SIZE_MB:
48660 				case DATA_FLUSH_INTERVAL_SECONDS:
48661 				case CLEANUP_POLICY:
48662 				case CUSTOM:
48663 				case STALE_QUERY_THRESHOLD_DAYS:
48664 				case OPERATION_MODE:
48665 				case QUERY_STORE:
48666 				case CURSOR_DEFAULT:
48667 				case GLOBAL:
48668 				case CURSOR_CLOSE_ON_COMMIT:
48669 				case HOURS:
48670 				case CHANGE_RETENTION:
48671 				case AUTO_CLEANUP:
48672 				case CHANGE_TRACKING:
48673 				case AUTOMATIC_TUNING:
48674 				case FORCE_LAST_GOOD_PLAN:
48675 				case AUTO_UPDATE_STATISTICS_ASYNC:
48676 				case AUTO_UPDATE_STATISTICS:
48677 				case AUTO_SHRINK:
48678 				case AUTO_CREATE_STATISTICS:
48679 				case INCREMENTAL:
48680 				case AUTO_CLOSE:
48681 				case DATA_RETENTION:
48682 				case TEMPORAL_HISTORY_RETENTION:
48683 				case EDITION:
48684 				case MIXED_PAGE_ALLOCATION:
48685 				case DISABLED:
48686 				case ALLOWED:
48687 				case HADR:
48688 				case MULTI_USER:
48689 				case RESTRICTED_USER:
48690 				case SINGLE_USER:
48691 				case OFFLINE:
48692 				case EMERGENCY:
48693 				case SUSPEND:
48694 				case DATE_CORRELATION_OPTIMIZATION:
48695 				case ELASTIC_POOL:
48696 				case SERVICE_OBJECTIVE:
48697 				case DATABASE_NAME:
48698 				case ALLOW_CONNECTIONS:
48699 				case GEO:
48700 				case NAMED:
48701 				case DATEFIRST:
48702 				case BACKUP_STORAGE_REDUNDANCY:
48703 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
48704 				case SECONDARY:
48705 				case FAILOVER:
48706 				case DEFAULT_FULLTEXT_LANGUAGE:
48707 				case DEFAULT_LANGUAGE:
48708 				case INLINE:
48709 				case NESTED_TRIGGERS:
48710 				case TRANSFORM_NOISE_WORDS:
48711 				case TWO_DIGIT_YEAR_CUTOFF:
48712 				case PERSISTENT_LOG_BUFFER:
48713 				case DIRECTORY_NAME:
48714 				case DATEFORMAT:
48715 				case DELAYED_DURABILITY:
48716 				case AUTHORIZATION:
48717 				case TRANSFER:
48718 				case SEARCH:
48719 				case MEMBER:
48720 				case IDENTIFIER_:
48721 				case DELIMITED_IDENTIFIER_:
48722 					{
48723 					setState(6529);
48724 					schemaName();
48725 					}
48726 					break;
48727 				case NULL:
48728 					{
48729 					setState(6530);
48730 					match(NULL);
48731 					}
48732 					break;
48733 				default:
48734 					throw new NoViableAltException(this);
48735 				}
48736 				}
48737 				break;
48738 			case LOGIN:
48739 				enterOuterAlt(_localctx, 3);
48740 				{
48741 				setState(6533);
48742 				match(LOGIN);
48743 				setState(6534);
48744 				match(EQ_);
48745 				setState(6535);
48746 				identifier();
48747 				}
48748 				break;
48749 			case PASSWORD:
48750 				enterOuterAlt(_localctx, 4);
48751 				{
48752 				setState(6536);
48753 				match(PASSWORD);
48754 				setState(6537);
48755 				match(EQ_);
48756 				setState(6538);
48757 				stringLiterals();
48758 				setState(6542);
48759 				_errHandler.sync(this);
48760 				_la = _input.LA(1);
48761 				if (_la==OLD_PASSWORD) {
48762 					{
48763 					setState(6539);
48764 					match(OLD_PASSWORD);
48765 					setState(6540);
48766 					match(EQ_);
48767 					setState(6541);
48768 					stringLiterals();
48769 					}
48770 				}
48771 
48772 				}
48773 				break;
48774 			case DEFAULT_LANGUAGE:
48775 				enterOuterAlt(_localctx, 5);
48776 				{
48777 				setState(6544);
48778 				match(DEFAULT_LANGUAGE);
48779 				setState(6545);
48780 				match(EQ_);
48781 				setState(6548);
48782 				_errHandler.sync(this);
48783 				switch (_input.LA(1)) {
48784 				case NONE:
48785 					{
48786 					setState(6546);
48787 					match(NONE);
48788 					}
48789 					break;
48790 				case TRUNCATE:
48791 				case SCHEMA:
48792 				case FUNCTION:
48793 				case TRIGGER:
48794 				case CAST:
48795 				case GROUP:
48796 				case LIMIT:
48797 				case OFFSET:
48798 				case SAVEPOINT:
48799 				case BOOLEAN:
48800 				case ARRAY:
48801 				case DATE:
48802 				case LOCALTIME:
48803 				case LOCALTIMESTAMP:
48804 				case QUARTER:
48805 				case WEEK:
48806 				case DAY:
48807 				case MICROSECOND:
48808 				case MAX:
48809 				case MIN:
48810 				case SUM:
48811 				case COUNT:
48812 				case AVG:
48813 				case ENABLE:
48814 				case DISABLE:
48815 				case INSTANCE:
48816 				case DO:
48817 				case DEFINER:
48818 				case SQL:
48819 				case CASCADED:
48820 				case LOCAL:
48821 				case NEXT:
48822 				case NAME:
48823 				case INTEGER:
48824 				case TYPE:
48825 				case READ_ONLY:
48826 				case DATABASE:
48827 				case DATEPART:
48828 				case PASSWORD:
48829 				case BINARY:
48830 				case HIDDEN_:
48831 				case MOD:
48832 				case PARTITION:
48833 				case PARTITIONS:
48834 				case TOP:
48835 				case ROW:
48836 				case ROWS:
48837 				case XOR:
48838 				case ALWAYS:
48839 				case ROLE:
48840 				case START:
48841 				case ALGORITHM:
48842 				case AUTO:
48843 				case BLOCKERS:
48844 				case CLUSTERED:
48845 				case NONCLUSTERED:
48846 				case COLUMNSTORE:
48847 				case CONTENT:
48848 				case YEARS:
48849 				case MONTHS:
48850 				case WEEKS:
48851 				case DAYS:
48852 				case MINUTES:
48853 				case DENY:
48854 				case DETERMINISTIC:
48855 				case DISTRIBUTION:
48856 				case DOCUMENT:
48857 				case DURABILITY:
48858 				case ENCRYPTED:
48859 				case FILESTREAM:
48860 				case FILETABLE:
48861 				case FILLFACTOR:
48862 				case FOLLOWING:
48863 				case HASH:
48864 				case HEAP:
48865 				case INBOUND:
48866 				case OUTBOUND:
48867 				case UNBOUNDED:
48868 				case INFINITE:
48869 				case LOGIN:
48870 				case MASKED:
48871 				case MAXDOP:
48872 				case MOVE:
48873 				case NOCHECK:
48874 				case OBJECT:
48875 				case OFF:
48876 				case ONLINE:
48877 				case OVER:
48878 				case PAGE:
48879 				case PAUSED:
48880 				case PERIOD:
48881 				case PERSISTED:
48882 				case PRECEDING:
48883 				case RANDOMIZED:
48884 				case RANGE:
48885 				case REBUILD:
48886 				case REPLICATE:
48887 				case REPLICATION:
48888 				case RESUMABLE:
48889 				case ROWGUIDCOL:
48890 				case SAVE:
48891 				case SELF:
48892 				case SPARSE:
48893 				case SWITCH:
48894 				case TRAN:
48895 				case TRANCOUNT:
48896 				case CONTROL:
48897 				case CONCAT:
48898 				case TAKE:
48899 				case OWNERSHIP:
48900 				case DEFINITION:
48901 				case APPLICATION:
48902 				case ASSEMBLY:
48903 				case SYMMETRIC:
48904 				case ASYMMETRIC:
48905 				case SERVER:
48906 				case RECEIVE:
48907 				case CHANGE:
48908 				case TRACE:
48909 				case TRACKING:
48910 				case RESOURCES:
48911 				case SETTINGS:
48912 				case STATE:
48913 				case AVAILABILITY:
48914 				case CREDENTIAL:
48915 				case ENDPOINT:
48916 				case EVENT:
48917 				case NOTIFICATION:
48918 				case LINKED:
48919 				case AUDIT:
48920 				case DDL:
48921 				case XML:
48922 				case IMPERSONATE:
48923 				case SECURABLES:
48924 				case AUTHENTICATE:
48925 				case EXTERNAL:
48926 				case ACCESS:
48927 				case ADMINISTER:
48928 				case BULK:
48929 				case OPERATIONS:
48930 				case UNSAFE:
48931 				case SHUTDOWN:
48932 				case SCOPED:
48933 				case CONFIGURATION:
48934 				case DATASPACE:
48935 				case SERVICE:
48936 				case CERTIFICATE:
48937 				case CONTRACT:
48938 				case ENCRYPTION:
48939 				case MASTER:
48940 				case DATA:
48941 				case SOURCE:
48942 				case FILE:
48943 				case FORMAT:
48944 				case LIBRARY:
48945 				case FULLTEXT:
48946 				case MASK:
48947 				case UNMASK:
48948 				case MESSAGE:
48949 				case REMOTE:
48950 				case BINDING:
48951 				case ROUTE:
48952 				case SECURITY:
48953 				case POLICY:
48954 				case AGGREGATE:
48955 				case QUEUE:
48956 				case RULE:
48957 				case SYNONYM:
48958 				case COLLECTION:
48959 				case SCRIPT:
48960 				case KILL:
48961 				case BACKUP:
48962 				case LOG:
48963 				case SHOWPLAN:
48964 				case SUBSCRIBE:
48965 				case QUERY:
48966 				case NOTIFICATIONS:
48967 				case CHECKPOINT:
48968 				case SEQUENCE:
48969 				case ABORT_AFTER_WAIT:
48970 				case ALLOW_PAGE_LOCKS:
48971 				case ALLOW_ROW_LOCKS:
48972 				case ALL_SPARSE_COLUMNS:
48973 				case BUCKET_COUNT:
48974 				case COLUMNSTORE_ARCHIVE:
48975 				case COLUMN_ENCRYPTION_KEY:
48976 				case COLUMN_SET:
48977 				case COMPRESSION_DELAY:
48978 				case DATABASE_DEAULT:
48979 				case DATA_COMPRESSION:
48980 				case DATA_CONSISTENCY_CHECK:
48981 				case ENCRYPTION_TYPE:
48982 				case SYSTEM_TIME:
48983 				case SYSTEM_VERSIONING:
48984 				case TEXTIMAGE_ON:
48985 				case WAIT_AT_LOW_PRIORITY:
48986 				case STATISTICS_INCREMENTAL:
48987 				case STATISTICS_NORECOMPUTE:
48988 				case ROUND_ROBIN:
48989 				case SCHEMA_AND_DATA:
48990 				case SCHEMA_ONLY:
48991 				case SORT_IN_TEMPDB:
48992 				case IGNORE_DUP_KEY:
48993 				case IMPLICIT_TRANSACTIONS:
48994 				case MAX_DURATION:
48995 				case MEMORY_OPTIMIZED:
48996 				case MIGRATION_STATE:
48997 				case PAD_INDEX:
48998 				case REMOTE_DATA_ARCHIVE:
48999 				case FILESTREAM_ON:
49000 				case FILETABLE_COLLATE_FILENAME:
49001 				case FILETABLE_DIRECTORY:
49002 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
49003 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
49004 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
49005 				case FILTER_PREDICATE:
49006 				case HISTORY_RETENTION_PERIOD:
49007 				case HISTORY_TABLE:
49008 				case LOCK_ESCALATION:
49009 				case DROP_EXISTING:
49010 				case ROW_NUMBER:
49011 				case FIRST:
49012 				case DATETIME2:
49013 				case OUTPUT:
49014 				case INSERTED:
49015 				case DELETED:
49016 				case FILENAME:
49017 				case MAXSIZE:
49018 				case FILEGROWTH:
49019 				case UNLIMITED:
49020 				case KB:
49021 				case MB:
49022 				case GB:
49023 				case TB:
49024 				case MEMORY_OPTIMIZED_DATA:
49025 				case FILEGROUP:
49026 				case NON_TRANSACTED_ACCESS:
49027 				case DB_CHAINING:
49028 				case TRUSTWORTHY:
49029 				case FORWARD_ONLY:
49030 				case KEYSET:
49031 				case FAST_FORWARD:
49032 				case SCROLL_LOCKS:
49033 				case OPTIMISTIC:
49034 				case TYPE_WARNING:
49035 				case SCHEMABINDING:
49036 				case CALLER:
49037 				case OWNER:
49038 				case SNAPSHOT:
49039 				case REPEATABLE:
49040 				case SERIALIZABLE:
49041 				case NATIVE_COMPILATION:
49042 				case VIEW_METADATA:
49043 				case INSTEAD:
49044 				case APPEND:
49045 				case INCREMENT:
49046 				case CACHE:
49047 				case MINVALUE:
49048 				case MAXVALUE:
49049 				case RESTART:
49050 				case LOB_COMPACTION:
49051 				case COMPRESS_ALL_ROW_GROUPS:
49052 				case REORGANIZE:
49053 				case RESUME:
49054 				case PAUSE:
49055 				case ABORT:
49056 				case ACCELERATED_DATABASE_RECOVERY:
49057 				case PERSISTENT_VERSION_STORE_FILEGROUP:
49058 				case IMMEDIATE:
49059 				case NO_WAIT:
49060 				case TARGET_RECOVERY_TIME:
49061 				case SECONDS:
49062 				case HONOR_BROKER_PRIORITY:
49063 				case ERROR_BROKER_CONVERSATIONS:
49064 				case NEW_BROKER:
49065 				case DISABLE_BROKER:
49066 				case ENABLE_BROKER:
49067 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
49068 				case READ_COMMITTED_SNAPSHOT:
49069 				case ALLOW_SNAPSHOT_ISOLATION:
49070 				case RECURSIVE_TRIGGERS:
49071 				case QUOTED_IDENTIFIER:
49072 				case NUMERIC_ROUNDABORT:
49073 				case CONCAT_NULL_YIELDS_NULL:
49074 				case COMPATIBILITY_LEVEL:
49075 				case ARITHABORT:
49076 				case ANSI_WARNINGS:
49077 				case ANSI_PADDING:
49078 				case ANSI_NULLS:
49079 				case ANSI_NULL_DEFAULT:
49080 				case PAGE_VERIFY:
49081 				case CHECKSUM:
49082 				case TORN_PAGE_DETECTION:
49083 				case BULK_LOGGED:
49084 				case RECOVERY:
49085 				case TOTAL_EXECUTION_CPU_TIME_MS:
49086 				case TOTAL_COMPILE_CPU_TIME_MS:
49087 				case STALE_CAPTURE_POLICY_THRESHOLD:
49088 				case EXECUTION_COUNT:
49089 				case QUERY_CAPTURE_POLICY:
49090 				case WAIT_STATS_CAPTURE_MODE:
49091 				case MAX_PLANS_PER_QUERY:
49092 				case QUERY_CAPTURE_MODE:
49093 				case SIZE_BASED_CLEANUP_MODE:
49094 				case INTERVAL_LENGTH_MINUTES:
49095 				case MAX_STORAGE_SIZE_MB:
49096 				case DATA_FLUSH_INTERVAL_SECONDS:
49097 				case CLEANUP_POLICY:
49098 				case CUSTOM:
49099 				case STALE_QUERY_THRESHOLD_DAYS:
49100 				case OPERATION_MODE:
49101 				case QUERY_STORE:
49102 				case CURSOR_DEFAULT:
49103 				case GLOBAL:
49104 				case CURSOR_CLOSE_ON_COMMIT:
49105 				case HOURS:
49106 				case CHANGE_RETENTION:
49107 				case AUTO_CLEANUP:
49108 				case CHANGE_TRACKING:
49109 				case AUTOMATIC_TUNING:
49110 				case FORCE_LAST_GOOD_PLAN:
49111 				case AUTO_UPDATE_STATISTICS_ASYNC:
49112 				case AUTO_UPDATE_STATISTICS:
49113 				case AUTO_SHRINK:
49114 				case AUTO_CREATE_STATISTICS:
49115 				case INCREMENTAL:
49116 				case AUTO_CLOSE:
49117 				case DATA_RETENTION:
49118 				case TEMPORAL_HISTORY_RETENTION:
49119 				case EDITION:
49120 				case MIXED_PAGE_ALLOCATION:
49121 				case DISABLED:
49122 				case ALLOWED:
49123 				case HADR:
49124 				case MULTI_USER:
49125 				case RESTRICTED_USER:
49126 				case SINGLE_USER:
49127 				case OFFLINE:
49128 				case EMERGENCY:
49129 				case SUSPEND:
49130 				case DATE_CORRELATION_OPTIMIZATION:
49131 				case ELASTIC_POOL:
49132 				case SERVICE_OBJECTIVE:
49133 				case DATABASE_NAME:
49134 				case ALLOW_CONNECTIONS:
49135 				case GEO:
49136 				case NAMED:
49137 				case DATEFIRST:
49138 				case BACKUP_STORAGE_REDUNDANCY:
49139 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
49140 				case SECONDARY:
49141 				case FAILOVER:
49142 				case DEFAULT_FULLTEXT_LANGUAGE:
49143 				case DEFAULT_LANGUAGE:
49144 				case INLINE:
49145 				case NESTED_TRIGGERS:
49146 				case TRANSFORM_NOISE_WORDS:
49147 				case TWO_DIGIT_YEAR_CUTOFF:
49148 				case PERSISTENT_LOG_BUFFER:
49149 				case DIRECTORY_NAME:
49150 				case DATEFORMAT:
49151 				case DELAYED_DURABILITY:
49152 				case AUTHORIZATION:
49153 				case TRANSFER:
49154 				case SEARCH:
49155 				case MEMBER:
49156 				case IDENTIFIER_:
49157 				case DELIMITED_IDENTIFIER_:
49158 					{
49159 					setState(6547);
49160 					identifier();
49161 					}
49162 					break;
49163 				default:
49164 					throw new NoViableAltException(this);
49165 				}
49166 				}
49167 				break;
49168 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
49169 				enterOuterAlt(_localctx, 6);
49170 				{
49171 				setState(6550);
49172 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
49173 				setState(6551);
49174 				match(EQ_);
49175 				setState(6553);
49176 				_errHandler.sync(this);
49177 				_la = _input.LA(1);
49178 				if (_la==ON || _la==OFF) {
49179 					{
49180 					setState(6552);
49181 					_la = _input.LA(1);
49182 					if ( !(_la==ON || _la==OFF) ) {
49183 					_errHandler.recoverInline(this);
49184 					}
49185 					else {
49186 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
49187 						_errHandler.reportMatch(this);
49188 						consume();
49189 					}
49190 					}
49191 				}
49192 
49193 				}
49194 				break;
49195 			default:
49196 				throw new NoViableAltException(this);
49197 			}
49198 		}
49199 		catch (RecognitionException re) {
49200 			_localctx.exception = re;
49201 			_errHandler.reportError(this, re);
49202 			_errHandler.recover(this, re);
49203 		}
49204 		finally {
49205 			exitRule();
49206 		}
49207 		return _localctx;
49208 	}
49209 
49210 	public static class CreateRoleContext extends ParserRuleContext {
49211 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
49212 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
49213 		public List<NameContext> name() {
49214 			return getRuleContexts(NameContext.class);
49215 		}
49216 		public NameContext name(int i) {
49217 			return getRuleContext(NameContext.class,i);
49218 		}
49219 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
49220 		public CreateRoleContext(ParserRuleContext parent, int invokingState) {
49221 			super(parent, invokingState);
49222 		}
49223 		@Override public int getRuleIndex() { return RULE_createRole; }
49224 		@Override
49225 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49226 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateRole(this);
49227 			else return visitor.visitChildren(this);
49228 		}
49229 	}
49230 
49231 	public final CreateRoleContext createRole() throws RecognitionException {
49232 		CreateRoleContext _localctx = new CreateRoleContext(_ctx, getState());
49233 		enterRule(_localctx, 902, RULE_createRole);
49234 		int _la;
49235 		try {
49236 			enterOuterAlt(_localctx, 1);
49237 			{
49238 			setState(6557);
49239 			match(CREATE);
49240 			setState(6558);
49241 			match(ROLE);
49242 			setState(6559);
49243 			name();
49244 			setState(6562);
49245 			_errHandler.sync(this);
49246 			_la = _input.LA(1);
49247 			if (_la==AUTHORIZATION) {
49248 				{
49249 				setState(6560);
49250 				match(AUTHORIZATION);
49251 				setState(6561);
49252 				name();
49253 				}
49254 			}
49255 
49256 			}
49257 		}
49258 		catch (RecognitionException re) {
49259 			_localctx.exception = re;
49260 			_errHandler.reportError(this, re);
49261 			_errHandler.recover(this, re);
49262 		}
49263 		finally {
49264 			exitRule();
49265 		}
49266 		return _localctx;
49267 	}
49268 
49269 	public static class DropRoleContext extends ParserRuleContext {
49270 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
49271 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
49272 		public NameContext name() {
49273 			return getRuleContext(NameContext.class,0);
49274 		}
49275 		public IfExistsContext ifExists() {
49276 			return getRuleContext(IfExistsContext.class,0);
49277 		}
49278 		public DropRoleContext(ParserRuleContext parent, int invokingState) {
49279 			super(parent, invokingState);
49280 		}
49281 		@Override public int getRuleIndex() { return RULE_dropRole; }
49282 		@Override
49283 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49284 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropRole(this);
49285 			else return visitor.visitChildren(this);
49286 		}
49287 	}
49288 
49289 	public final DropRoleContext dropRole() throws RecognitionException {
49290 		DropRoleContext _localctx = new DropRoleContext(_ctx, getState());
49291 		enterRule(_localctx, 904, RULE_dropRole);
49292 		int _la;
49293 		try {
49294 			enterOuterAlt(_localctx, 1);
49295 			{
49296 			setState(6564);
49297 			match(DROP);
49298 			setState(6565);
49299 			match(ROLE);
49300 			setState(6567);
49301 			_errHandler.sync(this);
49302 			_la = _input.LA(1);
49303 			if (_la==IF) {
49304 				{
49305 				setState(6566);
49306 				ifExists();
49307 				}
49308 			}
49309 
49310 			setState(6569);
49311 			name();
49312 			}
49313 		}
49314 		catch (RecognitionException re) {
49315 			_localctx.exception = re;
49316 			_errHandler.reportError(this, re);
49317 			_errHandler.recover(this, re);
49318 		}
49319 		finally {
49320 			exitRule();
49321 		}
49322 		return _localctx;
49323 	}
49324 
49325 	public static class AlterRoleContext extends ParserRuleContext {
49326 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
49327 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
49328 		public List<NameContext> name() {
49329 			return getRuleContexts(NameContext.class);
49330 		}
49331 		public NameContext name(int i) {
49332 			return getRuleContext(NameContext.class,i);
49333 		}
49334 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
49335 		public TerminalNode MEMBER() { return getToken(SQLServerStatementParser.MEMBER, 0); }
49336 		public PrincipalContext principal() {
49337 			return getRuleContext(PrincipalContext.class,0);
49338 		}
49339 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
49340 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
49341 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
49342 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
49343 		public AlterRoleContext(ParserRuleContext parent, int invokingState) {
49344 			super(parent, invokingState);
49345 		}
49346 		@Override public int getRuleIndex() { return RULE_alterRole; }
49347 		@Override
49348 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49349 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterRole(this);
49350 			else return visitor.visitChildren(this);
49351 		}
49352 	}
49353 
49354 	public final AlterRoleContext alterRole() throws RecognitionException {
49355 		AlterRoleContext _localctx = new AlterRoleContext(_ctx, getState());
49356 		enterRule(_localctx, 906, RULE_alterRole);
49357 		try {
49358 			enterOuterAlt(_localctx, 1);
49359 			{
49360 			setState(6571);
49361 			match(ALTER);
49362 			setState(6572);
49363 			match(ROLE);
49364 			setState(6573);
49365 			name();
49366 			setState(6584);
49367 			_errHandler.sync(this);
49368 			switch (_input.LA(1)) {
49369 			case ADD:
49370 				{
49371 				setState(6574);
49372 				match(ADD);
49373 				setState(6575);
49374 				match(MEMBER);
49375 				setState(6576);
49376 				principal();
49377 				}
49378 				break;
49379 			case DROP:
49380 				{
49381 				setState(6577);
49382 				match(DROP);
49383 				setState(6578);
49384 				match(MEMBER);
49385 				setState(6579);
49386 				principal();
49387 				}
49388 				break;
49389 			case WITH:
49390 				{
49391 				setState(6580);
49392 				match(WITH);
49393 				setState(6581);
49394 				match(NAME);
49395 				setState(6582);
49396 				match(EQ_);
49397 				setState(6583);
49398 				name();
49399 				}
49400 				break;
49401 			default:
49402 				throw new NoViableAltException(this);
49403 			}
49404 			}
49405 		}
49406 		catch (RecognitionException re) {
49407 			_localctx.exception = re;
49408 			_errHandler.reportError(this, re);
49409 			_errHandler.recover(this, re);
49410 		}
49411 		finally {
49412 			exitRule();
49413 		}
49414 		return _localctx;
49415 	}
49416 
49417 	public static class CreateLoginContext extends ParserRuleContext {
49418 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
49419 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
49420 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
49421 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
49422 		}
49423 		public CreateLoginForSQLServerClauseContext createLoginForSQLServerClause() {
49424 			return getRuleContext(CreateLoginForSQLServerClauseContext.class,0);
49425 		}
49426 		public CreateLoginForAzureSQLDatabaseClauseContext createLoginForAzureSQLDatabaseClause() {
49427 			return getRuleContext(CreateLoginForAzureSQLDatabaseClauseContext.class,0);
49428 		}
49429 		public CreateLoginForAzureManagedInstanceClauseContext createLoginForAzureManagedInstanceClause() {
49430 			return getRuleContext(CreateLoginForAzureManagedInstanceClauseContext.class,0);
49431 		}
49432 		public CreateLoginForAzureSynapseAnalyticsClauseContext createLoginForAzureSynapseAnalyticsClause() {
49433 			return getRuleContext(CreateLoginForAzureSynapseAnalyticsClauseContext.class,0);
49434 		}
49435 		public CreateLoginForAnalyticsPlatformSystemClauseContext createLoginForAnalyticsPlatformSystemClause() {
49436 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemClauseContext.class,0);
49437 		}
49438 		public CreateLoginContext(ParserRuleContext parent, int invokingState) {
49439 			super(parent, invokingState);
49440 		}
49441 		@Override public int getRuleIndex() { return RULE_createLogin; }
49442 		@Override
49443 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49444 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLogin(this);
49445 			else return visitor.visitChildren(this);
49446 		}
49447 	}
49448 
49449 	public final CreateLoginContext createLogin() throws RecognitionException {
49450 		CreateLoginContext _localctx = new CreateLoginContext(_ctx, getState());
49451 		enterRule(_localctx, 908, RULE_createLogin);
49452 		try {
49453 			enterOuterAlt(_localctx, 1);
49454 			{
49455 			setState(6586);
49456 			match(CREATE);
49457 			setState(6587);
49458 			match(LOGIN);
49459 			setState(6588);
49460 			ignoredNameIdentifier();
49461 			setState(6594);
49462 			_errHandler.sync(this);
49463 			switch ( getInterpreter().adaptivePredict(_input,754,_ctx) ) {
49464 			case 1:
49465 				{
49466 				setState(6589);
49467 				createLoginForSQLServerClause();
49468 				}
49469 				break;
49470 			case 2:
49471 				{
49472 				setState(6590);
49473 				createLoginForAzureSQLDatabaseClause();
49474 				}
49475 				break;
49476 			case 3:
49477 				{
49478 				setState(6591);
49479 				createLoginForAzureManagedInstanceClause();
49480 				}
49481 				break;
49482 			case 4:
49483 				{
49484 				setState(6592);
49485 				createLoginForAzureSynapseAnalyticsClause();
49486 				}
49487 				break;
49488 			case 5:
49489 				{
49490 				setState(6593);
49491 				createLoginForAnalyticsPlatformSystemClause();
49492 				}
49493 				break;
49494 			}
49495 			}
49496 		}
49497 		catch (RecognitionException re) {
49498 			_localctx.exception = re;
49499 			_errHandler.reportError(this, re);
49500 			_errHandler.recover(this, re);
49501 		}
49502 		finally {
49503 			exitRule();
49504 		}
49505 		return _localctx;
49506 	}
49507 
49508 	public static class CreateLoginForSQLServerClauseContext extends ParserRuleContext {
49509 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
49510 		public CreateLoginForSQLServerOptionListContext createLoginForSQLServerOptionList() {
49511 			return getRuleContext(CreateLoginForSQLServerOptionListContext.class,0);
49512 		}
49513 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
49514 		public SourcesContext sources() {
49515 			return getRuleContext(SourcesContext.class,0);
49516 		}
49517 		public CreateLoginForSQLServerClauseContext(ParserRuleContext parent, int invokingState) {
49518 			super(parent, invokingState);
49519 		}
49520 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerClause; }
49521 		@Override
49522 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49523 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerClause(this);
49524 			else return visitor.visitChildren(this);
49525 		}
49526 	}
49527 
49528 	public final CreateLoginForSQLServerClauseContext createLoginForSQLServerClause() throws RecognitionException {
49529 		CreateLoginForSQLServerClauseContext _localctx = new CreateLoginForSQLServerClauseContext(_ctx, getState());
49530 		enterRule(_localctx, 910, RULE_createLoginForSQLServerClause);
49531 		try {
49532 			setState(6600);
49533 			_errHandler.sync(this);
49534 			switch (_input.LA(1)) {
49535 			case WITH:
49536 				enterOuterAlt(_localctx, 1);
49537 				{
49538 				setState(6596);
49539 				match(WITH);
49540 				setState(6597);
49541 				createLoginForSQLServerOptionList();
49542 				}
49543 				break;
49544 			case FROM:
49545 				enterOuterAlt(_localctx, 2);
49546 				{
49547 				setState(6598);
49548 				match(FROM);
49549 				setState(6599);
49550 				sources();
49551 				}
49552 				break;
49553 			default:
49554 				throw new NoViableAltException(this);
49555 			}
49556 		}
49557 		catch (RecognitionException re) {
49558 			_localctx.exception = re;
49559 			_errHandler.reportError(this, re);
49560 			_errHandler.recover(this, re);
49561 		}
49562 		finally {
49563 			exitRule();
49564 		}
49565 		return _localctx;
49566 	}
49567 
49568 	public static class CreateLoginForSQLServerOptionListContext extends ParserRuleContext {
49569 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
49570 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
49571 		public StringLiteralsContext stringLiterals() {
49572 			return getRuleContext(StringLiteralsContext.class,0);
49573 		}
49574 		public HashedPasswordContext hashedPassword() {
49575 			return getRuleContext(HashedPasswordContext.class,0);
49576 		}
49577 		public TerminalNode HASHED() { return getToken(SQLServerStatementParser.HASHED, 0); }
49578 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
49579 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
49580 		public TerminalNode COMMA_(int i) {
49581 			return getToken(SQLServerStatementParser.COMMA_, i);
49582 		}
49583 		public List<CreateLoginForSQLServerOptionListClauseContext> createLoginForSQLServerOptionListClause() {
49584 			return getRuleContexts(CreateLoginForSQLServerOptionListClauseContext.class);
49585 		}
49586 		public CreateLoginForSQLServerOptionListClauseContext createLoginForSQLServerOptionListClause(int i) {
49587 			return getRuleContext(CreateLoginForSQLServerOptionListClauseContext.class,i);
49588 		}
49589 		public CreateLoginForSQLServerOptionListContext(ParserRuleContext parent, int invokingState) {
49590 			super(parent, invokingState);
49591 		}
49592 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerOptionList; }
49593 		@Override
49594 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49595 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerOptionList(this);
49596 			else return visitor.visitChildren(this);
49597 		}
49598 	}
49599 
49600 	public final CreateLoginForSQLServerOptionListContext createLoginForSQLServerOptionList() throws RecognitionException {
49601 		CreateLoginForSQLServerOptionListContext _localctx = new CreateLoginForSQLServerOptionListContext(_ctx, getState());
49602 		enterRule(_localctx, 912, RULE_createLoginForSQLServerOptionList);
49603 		int _la;
49604 		try {
49605 			enterOuterAlt(_localctx, 1);
49606 			{
49607 			setState(6602);
49608 			match(PASSWORD);
49609 			setState(6603);
49610 			match(EQ_);
49611 			setState(6608);
49612 			_errHandler.sync(this);
49613 			switch (_input.LA(1)) {
49614 			case STRING_:
49615 			case NCHAR_TEXT:
49616 				{
49617 				setState(6604);
49618 				stringLiterals();
49619 				}
49620 				break;
49621 			case HEX_DIGIT_:
49622 				{
49623 				setState(6605);
49624 				hashedPassword();
49625 				setState(6606);
49626 				match(HASHED);
49627 				}
49628 				break;
49629 			default:
49630 				throw new NoViableAltException(this);
49631 			}
49632 			setState(6611);
49633 			_errHandler.sync(this);
49634 			_la = _input.LA(1);
49635 			if (_la==MUST_CHANGE) {
49636 				{
49637 				setState(6610);
49638 				match(MUST_CHANGE);
49639 				}
49640 			}
49641 
49642 			setState(6622);
49643 			_errHandler.sync(this);
49644 			_la = _input.LA(1);
49645 			if (_la==COMMA_) {
49646 				{
49647 				setState(6613);
49648 				match(COMMA_);
49649 				setState(6614);
49650 				createLoginForSQLServerOptionListClause();
49651 				setState(6619);
49652 				_errHandler.sync(this);
49653 				_la = _input.LA(1);
49654 				while (_la==COMMA_) {
49655 					{
49656 					{
49657 					setState(6615);
49658 					match(COMMA_);
49659 					setState(6616);
49660 					createLoginForSQLServerOptionListClause();
49661 					}
49662 					}
49663 					setState(6621);
49664 					_errHandler.sync(this);
49665 					_la = _input.LA(1);
49666 				}
49667 				}
49668 			}
49669 
49670 			}
49671 		}
49672 		catch (RecognitionException re) {
49673 			_localctx.exception = re;
49674 			_errHandler.reportError(this, re);
49675 			_errHandler.recover(this, re);
49676 		}
49677 		finally {
49678 			exitRule();
49679 		}
49680 		return _localctx;
49681 	}
49682 
49683 	public static class CreateLoginForSQLServerOptionListClauseContext extends ParserRuleContext {
49684 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
49685 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
49686 		public SidContext sid() {
49687 			return getRuleContext(SidContext.class,0);
49688 		}
49689 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
49690 		public DatabaseNameContext databaseName() {
49691 			return getRuleContext(DatabaseNameContext.class,0);
49692 		}
49693 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
49694 		public IdentifierContext identifier() {
49695 			return getRuleContext(IdentifierContext.class,0);
49696 		}
49697 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
49698 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
49699 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
49700 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
49701 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
49702 		public CreateLoginForSQLServerOptionListClauseContext(ParserRuleContext parent, int invokingState) {
49703 			super(parent, invokingState);
49704 		}
49705 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerOptionListClause; }
49706 		@Override
49707 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49708 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerOptionListClause(this);
49709 			else return visitor.visitChildren(this);
49710 		}
49711 	}
49712 
49713 	public final CreateLoginForSQLServerOptionListClauseContext createLoginForSQLServerOptionListClause() throws RecognitionException {
49714 		CreateLoginForSQLServerOptionListClauseContext _localctx = new CreateLoginForSQLServerOptionListClauseContext(_ctx, getState());
49715 		enterRule(_localctx, 914, RULE_createLoginForSQLServerOptionListClause);
49716 		int _la;
49717 		try {
49718 			setState(6642);
49719 			_errHandler.sync(this);
49720 			switch (_input.LA(1)) {
49721 			case SID:
49722 				enterOuterAlt(_localctx, 1);
49723 				{
49724 				setState(6624);
49725 				match(SID);
49726 				setState(6625);
49727 				match(EQ_);
49728 				setState(6626);
49729 				sid();
49730 				}
49731 				break;
49732 			case DEFAULT_DATABASE:
49733 				enterOuterAlt(_localctx, 2);
49734 				{
49735 				setState(6627);
49736 				match(DEFAULT_DATABASE);
49737 				setState(6628);
49738 				match(EQ_);
49739 				setState(6629);
49740 				databaseName();
49741 				}
49742 				break;
49743 			case DEFAULT_LANGUAGE:
49744 				enterOuterAlt(_localctx, 3);
49745 				{
49746 				setState(6630);
49747 				match(DEFAULT_LANGUAGE);
49748 				setState(6631);
49749 				match(EQ_);
49750 				setState(6632);
49751 				identifier();
49752 				}
49753 				break;
49754 			case CHECK_EXPIRATION:
49755 				enterOuterAlt(_localctx, 4);
49756 				{
49757 				setState(6633);
49758 				match(CHECK_EXPIRATION);
49759 				setState(6634);
49760 				match(EQ_);
49761 				setState(6635);
49762 				_la = _input.LA(1);
49763 				if ( !(_la==ON || _la==OFF) ) {
49764 				_errHandler.recoverInline(this);
49765 				}
49766 				else {
49767 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
49768 					_errHandler.reportMatch(this);
49769 					consume();
49770 				}
49771 				}
49772 				break;
49773 			case CHECK_POLICY:
49774 				enterOuterAlt(_localctx, 5);
49775 				{
49776 				setState(6636);
49777 				match(CHECK_POLICY);
49778 				setState(6637);
49779 				match(EQ_);
49780 				setState(6638);
49781 				_la = _input.LA(1);
49782 				if ( !(_la==ON || _la==OFF) ) {
49783 				_errHandler.recoverInline(this);
49784 				}
49785 				else {
49786 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
49787 					_errHandler.reportMatch(this);
49788 					consume();
49789 				}
49790 				}
49791 				break;
49792 			case CREDENTIAL:
49793 				enterOuterAlt(_localctx, 6);
49794 				{
49795 				setState(6639);
49796 				match(CREDENTIAL);
49797 				setState(6640);
49798 				match(EQ_);
49799 				setState(6641);
49800 				identifier();
49801 				}
49802 				break;
49803 			default:
49804 				throw new NoViableAltException(this);
49805 			}
49806 		}
49807 		catch (RecognitionException re) {
49808 			_localctx.exception = re;
49809 			_errHandler.reportError(this, re);
49810 			_errHandler.recover(this, re);
49811 		}
49812 		finally {
49813 			exitRule();
49814 		}
49815 		return _localctx;
49816 	}
49817 
49818 	public static class HashedPasswordContext extends ParserRuleContext {
49819 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
49820 		public HashedPasswordContext(ParserRuleContext parent, int invokingState) {
49821 			super(parent, invokingState);
49822 		}
49823 		@Override public int getRuleIndex() { return RULE_hashedPassword; }
49824 		@Override
49825 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49826 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHashedPassword(this);
49827 			else return visitor.visitChildren(this);
49828 		}
49829 	}
49830 
49831 	public final HashedPasswordContext hashedPassword() throws RecognitionException {
49832 		HashedPasswordContext _localctx = new HashedPasswordContext(_ctx, getState());
49833 		enterRule(_localctx, 916, RULE_hashedPassword);
49834 		try {
49835 			enterOuterAlt(_localctx, 1);
49836 			{
49837 			setState(6644);
49838 			match(HEX_DIGIT_);
49839 			}
49840 		}
49841 		catch (RecognitionException re) {
49842 			_localctx.exception = re;
49843 			_errHandler.reportError(this, re);
49844 			_errHandler.recover(this, re);
49845 		}
49846 		finally {
49847 			exitRule();
49848 		}
49849 		return _localctx;
49850 	}
49851 
49852 	public static class SidContext extends ParserRuleContext {
49853 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
49854 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
49855 		public SidContext(ParserRuleContext parent, int invokingState) {
49856 			super(parent, invokingState);
49857 		}
49858 		@Override public int getRuleIndex() { return RULE_sid; }
49859 		@Override
49860 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49861 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSid(this);
49862 			else return visitor.visitChildren(this);
49863 		}
49864 	}
49865 
49866 	public final SidContext sid() throws RecognitionException {
49867 		SidContext _localctx = new SidContext(_ctx, getState());
49868 		enterRule(_localctx, 918, RULE_sid);
49869 		int _la;
49870 		try {
49871 			enterOuterAlt(_localctx, 1);
49872 			{
49873 			setState(6646);
49874 			_la = _input.LA(1);
49875 			if ( !(_la==HEX_DIGIT_ || _la==NCHAR_TEXT) ) {
49876 			_errHandler.recoverInline(this);
49877 			}
49878 			else {
49879 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
49880 				_errHandler.reportMatch(this);
49881 				consume();
49882 			}
49883 			}
49884 		}
49885 		catch (RecognitionException re) {
49886 			_localctx.exception = re;
49887 			_errHandler.reportError(this, re);
49888 			_errHandler.recover(this, re);
49889 		}
49890 		finally {
49891 			exitRule();
49892 		}
49893 		return _localctx;
49894 	}
49895 
49896 	public static class SourcesContext extends ParserRuleContext {
49897 		public TerminalNode WINDOWS() { return getToken(SQLServerStatementParser.WINDOWS, 0); }
49898 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
49899 		public List<WindowsOptionsContext> windowsOptions() {
49900 			return getRuleContexts(WindowsOptionsContext.class);
49901 		}
49902 		public WindowsOptionsContext windowsOptions(int i) {
49903 			return getRuleContext(WindowsOptionsContext.class,i);
49904 		}
49905 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
49906 		public TerminalNode COMMA_(int i) {
49907 			return getToken(SQLServerStatementParser.COMMA_, i);
49908 		}
49909 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
49910 		public IdentifierContext identifier() {
49911 			return getRuleContext(IdentifierContext.class,0);
49912 		}
49913 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
49914 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
49915 		public SourcesContext(ParserRuleContext parent, int invokingState) {
49916 			super(parent, invokingState);
49917 		}
49918 		@Override public int getRuleIndex() { return RULE_sources; }
49919 		@Override
49920 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49921 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSources(this);
49922 			else return visitor.visitChildren(this);
49923 		}
49924 	}
49925 
49926 	public final SourcesContext sources() throws RecognitionException {
49927 		SourcesContext _localctx = new SourcesContext(_ctx, getState());
49928 		enterRule(_localctx, 920, RULE_sources);
49929 		int _la;
49930 		try {
49931 			setState(6665);
49932 			_errHandler.sync(this);
49933 			switch (_input.LA(1)) {
49934 			case WINDOWS:
49935 				enterOuterAlt(_localctx, 1);
49936 				{
49937 				setState(6648);
49938 				match(WINDOWS);
49939 				setState(6658);
49940 				_errHandler.sync(this);
49941 				_la = _input.LA(1);
49942 				if (_la==WITH) {
49943 					{
49944 					setState(6649);
49945 					match(WITH);
49946 					setState(6650);
49947 					windowsOptions();
49948 					setState(6655);
49949 					_errHandler.sync(this);
49950 					_la = _input.LA(1);
49951 					while (_la==COMMA_) {
49952 						{
49953 						{
49954 						setState(6651);
49955 						match(COMMA_);
49956 						setState(6652);
49957 						windowsOptions();
49958 						}
49959 						}
49960 						setState(6657);
49961 						_errHandler.sync(this);
49962 						_la = _input.LA(1);
49963 					}
49964 					}
49965 				}
49966 
49967 				}
49968 				break;
49969 			case CERTIFICATE:
49970 				enterOuterAlt(_localctx, 2);
49971 				{
49972 				setState(6660);
49973 				match(CERTIFICATE);
49974 				setState(6661);
49975 				identifier();
49976 				}
49977 				break;
49978 			case ASYMMETRIC:
49979 				enterOuterAlt(_localctx, 3);
49980 				{
49981 				setState(6662);
49982 				match(ASYMMETRIC);
49983 				setState(6663);
49984 				match(KEY);
49985 				setState(6664);
49986 				identifier();
49987 				}
49988 				break;
49989 			default:
49990 				throw new NoViableAltException(this);
49991 			}
49992 		}
49993 		catch (RecognitionException re) {
49994 			_localctx.exception = re;
49995 			_errHandler.reportError(this, re);
49996 			_errHandler.recover(this, re);
49997 		}
49998 		finally {
49999 			exitRule();
50000 		}
50001 		return _localctx;
50002 	}
50003 
50004 	public static class WindowsOptionsContext extends ParserRuleContext {
50005 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
50006 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50007 		public DatabaseNameContext databaseName() {
50008 			return getRuleContext(DatabaseNameContext.class,0);
50009 		}
50010 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
50011 		public IdentifierContext identifier() {
50012 			return getRuleContext(IdentifierContext.class,0);
50013 		}
50014 		public WindowsOptionsContext(ParserRuleContext parent, int invokingState) {
50015 			super(parent, invokingState);
50016 		}
50017 		@Override public int getRuleIndex() { return RULE_windowsOptions; }
50018 		@Override
50019 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50020 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowsOptions(this);
50021 			else return visitor.visitChildren(this);
50022 		}
50023 	}
50024 
50025 	public final WindowsOptionsContext windowsOptions() throws RecognitionException {
50026 		WindowsOptionsContext _localctx = new WindowsOptionsContext(_ctx, getState());
50027 		enterRule(_localctx, 922, RULE_windowsOptions);
50028 		try {
50029 			setState(6673);
50030 			_errHandler.sync(this);
50031 			switch (_input.LA(1)) {
50032 			case DEFAULT_DATABASE:
50033 				enterOuterAlt(_localctx, 1);
50034 				{
50035 				setState(6667);
50036 				match(DEFAULT_DATABASE);
50037 				setState(6668);
50038 				match(EQ_);
50039 				setState(6669);
50040 				databaseName();
50041 				}
50042 				break;
50043 			case DEFAULT_LANGUAGE:
50044 				enterOuterAlt(_localctx, 2);
50045 				{
50046 				setState(6670);
50047 				match(DEFAULT_LANGUAGE);
50048 				setState(6671);
50049 				match(EQ_);
50050 				setState(6672);
50051 				identifier();
50052 				}
50053 				break;
50054 			default:
50055 				throw new NoViableAltException(this);
50056 			}
50057 		}
50058 		catch (RecognitionException re) {
50059 			_localctx.exception = re;
50060 			_errHandler.reportError(this, re);
50061 			_errHandler.recover(this, re);
50062 		}
50063 		finally {
50064 			exitRule();
50065 		}
50066 		return _localctx;
50067 	}
50068 
50069 	public static class CreateLoginForAzureSQLDatabaseClauseContext extends ParserRuleContext {
50070 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50071 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
50072 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
50073 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50074 		public List<CreateLoginForAzureSQLDatabaseOptionListContext> createLoginForAzureSQLDatabaseOptionList() {
50075 			return getRuleContexts(CreateLoginForAzureSQLDatabaseOptionListContext.class);
50076 		}
50077 		public CreateLoginForAzureSQLDatabaseOptionListContext createLoginForAzureSQLDatabaseOptionList(int i) {
50078 			return getRuleContext(CreateLoginForAzureSQLDatabaseOptionListContext.class,i);
50079 		}
50080 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50081 		public TerminalNode COMMA_(int i) {
50082 			return getToken(SQLServerStatementParser.COMMA_, i);
50083 		}
50084 		public CreateLoginForAzureSQLDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
50085 			super(parent, invokingState);
50086 		}
50087 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSQLDatabaseClause; }
50088 		@Override
50089 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50090 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSQLDatabaseClause(this);
50091 			else return visitor.visitChildren(this);
50092 		}
50093 	}
50094 
50095 	public final CreateLoginForAzureSQLDatabaseClauseContext createLoginForAzureSQLDatabaseClause() throws RecognitionException {
50096 		CreateLoginForAzureSQLDatabaseClauseContext _localctx = new CreateLoginForAzureSQLDatabaseClauseContext(_ctx, getState());
50097 		enterRule(_localctx, 924, RULE_createLoginForAzureSQLDatabaseClause);
50098 		int _la;
50099 		try {
50100 			setState(6687);
50101 			_errHandler.sync(this);
50102 			switch (_input.LA(1)) {
50103 			case FROM:
50104 				enterOuterAlt(_localctx, 1);
50105 				{
50106 				setState(6675);
50107 				match(FROM);
50108 				setState(6676);
50109 				match(EXTERNAL);
50110 				setState(6677);
50111 				match(PROVIDER);
50112 				}
50113 				break;
50114 			case WITH:
50115 				enterOuterAlt(_localctx, 2);
50116 				{
50117 				setState(6678);
50118 				match(WITH);
50119 				setState(6679);
50120 				createLoginForAzureSQLDatabaseOptionList();
50121 				setState(6684);
50122 				_errHandler.sync(this);
50123 				_la = _input.LA(1);
50124 				while (_la==COMMA_) {
50125 					{
50126 					{
50127 					setState(6680);
50128 					match(COMMA_);
50129 					setState(6681);
50130 					createLoginForAzureSQLDatabaseOptionList();
50131 					}
50132 					}
50133 					setState(6686);
50134 					_errHandler.sync(this);
50135 					_la = _input.LA(1);
50136 				}
50137 				}
50138 				break;
50139 			default:
50140 				throw new NoViableAltException(this);
50141 			}
50142 		}
50143 		catch (RecognitionException re) {
50144 			_localctx.exception = re;
50145 			_errHandler.reportError(this, re);
50146 			_errHandler.recover(this, re);
50147 		}
50148 		finally {
50149 			exitRule();
50150 		}
50151 		return _localctx;
50152 	}
50153 
50154 	public static class CreateLoginForAzureSQLDatabaseOptionListContext extends ParserRuleContext {
50155 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50156 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
50157 		public TerminalNode EQ_(int i) {
50158 			return getToken(SQLServerStatementParser.EQ_, i);
50159 		}
50160 		public StringLiteralsContext stringLiterals() {
50161 			return getRuleContext(StringLiteralsContext.class,0);
50162 		}
50163 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
50164 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
50165 		public SidContext sid() {
50166 			return getRuleContext(SidContext.class,0);
50167 		}
50168 		public CreateLoginForAzureSQLDatabaseOptionListContext(ParserRuleContext parent, int invokingState) {
50169 			super(parent, invokingState);
50170 		}
50171 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSQLDatabaseOptionList; }
50172 		@Override
50173 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50174 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSQLDatabaseOptionList(this);
50175 			else return visitor.visitChildren(this);
50176 		}
50177 	}
50178 
50179 	public final CreateLoginForAzureSQLDatabaseOptionListContext createLoginForAzureSQLDatabaseOptionList() throws RecognitionException {
50180 		CreateLoginForAzureSQLDatabaseOptionListContext _localctx = new CreateLoginForAzureSQLDatabaseOptionListContext(_ctx, getState());
50181 		enterRule(_localctx, 926, RULE_createLoginForAzureSQLDatabaseOptionList);
50182 		try {
50183 			enterOuterAlt(_localctx, 1);
50184 			{
50185 			setState(6689);
50186 			match(PASSWORD);
50187 			setState(6690);
50188 			match(EQ_);
50189 			setState(6691);
50190 			stringLiterals();
50191 			setState(6696);
50192 			_errHandler.sync(this);
50193 			switch ( getInterpreter().adaptivePredict(_input,767,_ctx) ) {
50194 			case 1:
50195 				{
50196 				setState(6692);
50197 				match(COMMA_);
50198 				setState(6693);
50199 				match(SID);
50200 				setState(6694);
50201 				match(EQ_);
50202 				setState(6695);
50203 				sid();
50204 				}
50205 				break;
50206 			}
50207 			}
50208 		}
50209 		catch (RecognitionException re) {
50210 			_localctx.exception = re;
50211 			_errHandler.reportError(this, re);
50212 			_errHandler.recover(this, re);
50213 		}
50214 		finally {
50215 			exitRule();
50216 		}
50217 		return _localctx;
50218 	}
50219 
50220 	public static class CreateLoginForAzureManagedInstanceClauseContext extends ParserRuleContext {
50221 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50222 		public List<AzureManagedInstanceOptionListContext> azureManagedInstanceOptionList() {
50223 			return getRuleContexts(AzureManagedInstanceOptionListContext.class);
50224 		}
50225 		public AzureManagedInstanceOptionListContext azureManagedInstanceOptionList(int i) {
50226 			return getRuleContext(AzureManagedInstanceOptionListContext.class,i);
50227 		}
50228 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50229 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
50230 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
50231 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50232 		public TerminalNode COMMA_(int i) {
50233 			return getToken(SQLServerStatementParser.COMMA_, i);
50234 		}
50235 		public CreateLoginForAzureManagedInstanceClauseContext(ParserRuleContext parent, int invokingState) {
50236 			super(parent, invokingState);
50237 		}
50238 		@Override public int getRuleIndex() { return RULE_createLoginForAzureManagedInstanceClause; }
50239 		@Override
50240 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50241 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureManagedInstanceClause(this);
50242 			else return visitor.visitChildren(this);
50243 		}
50244 	}
50245 
50246 	public final CreateLoginForAzureManagedInstanceClauseContext createLoginForAzureManagedInstanceClause() throws RecognitionException {
50247 		CreateLoginForAzureManagedInstanceClauseContext _localctx = new CreateLoginForAzureManagedInstanceClauseContext(_ctx, getState());
50248 		enterRule(_localctx, 928, RULE_createLoginForAzureManagedInstanceClause);
50249 		int _la;
50250 		try {
50251 			enterOuterAlt(_localctx, 1);
50252 			{
50253 			setState(6701);
50254 			_errHandler.sync(this);
50255 			_la = _input.LA(1);
50256 			if (_la==FROM) {
50257 				{
50258 				setState(6698);
50259 				match(FROM);
50260 				setState(6699);
50261 				match(EXTERNAL);
50262 				setState(6700);
50263 				match(PROVIDER);
50264 				}
50265 			}
50266 
50267 			setState(6703);
50268 			match(WITH);
50269 			setState(6704);
50270 			azureManagedInstanceOptionList();
50271 			setState(6709);
50272 			_errHandler.sync(this);
50273 			_la = _input.LA(1);
50274 			while (_la==COMMA_) {
50275 				{
50276 				{
50277 				setState(6705);
50278 				match(COMMA_);
50279 				setState(6706);
50280 				azureManagedInstanceOptionList();
50281 				}
50282 				}
50283 				setState(6711);
50284 				_errHandler.sync(this);
50285 				_la = _input.LA(1);
50286 			}
50287 			}
50288 		}
50289 		catch (RecognitionException re) {
50290 			_localctx.exception = re;
50291 			_errHandler.reportError(this, re);
50292 			_errHandler.recover(this, re);
50293 		}
50294 		finally {
50295 			exitRule();
50296 		}
50297 		return _localctx;
50298 	}
50299 
50300 	public static class AzureManagedInstanceOptionListContext extends ParserRuleContext {
50301 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50302 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50303 		public StringLiteralsContext stringLiterals() {
50304 			return getRuleContext(StringLiteralsContext.class,0);
50305 		}
50306 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
50307 		public SidContext sid() {
50308 			return getRuleContext(SidContext.class,0);
50309 		}
50310 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
50311 		public DatabaseNameContext databaseName() {
50312 			return getRuleContext(DatabaseNameContext.class,0);
50313 		}
50314 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
50315 		public IdentifierContext identifier() {
50316 			return getRuleContext(IdentifierContext.class,0);
50317 		}
50318 		public AzureManagedInstanceOptionListContext(ParserRuleContext parent, int invokingState) {
50319 			super(parent, invokingState);
50320 		}
50321 		@Override public int getRuleIndex() { return RULE_azureManagedInstanceOptionList; }
50322 		@Override
50323 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50324 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAzureManagedInstanceOptionList(this);
50325 			else return visitor.visitChildren(this);
50326 		}
50327 	}
50328 
50329 	public final AzureManagedInstanceOptionListContext azureManagedInstanceOptionList() throws RecognitionException {
50330 		AzureManagedInstanceOptionListContext _localctx = new AzureManagedInstanceOptionListContext(_ctx, getState());
50331 		enterRule(_localctx, 930, RULE_azureManagedInstanceOptionList);
50332 		try {
50333 			setState(6724);
50334 			_errHandler.sync(this);
50335 			switch (_input.LA(1)) {
50336 			case PASSWORD:
50337 				enterOuterAlt(_localctx, 1);
50338 				{
50339 				setState(6712);
50340 				match(PASSWORD);
50341 				setState(6713);
50342 				match(EQ_);
50343 				setState(6714);
50344 				stringLiterals();
50345 				}
50346 				break;
50347 			case SID:
50348 				enterOuterAlt(_localctx, 2);
50349 				{
50350 				setState(6715);
50351 				match(SID);
50352 				setState(6716);
50353 				match(EQ_);
50354 				setState(6717);
50355 				sid();
50356 				}
50357 				break;
50358 			case DEFAULT_DATABASE:
50359 				enterOuterAlt(_localctx, 3);
50360 				{
50361 				setState(6718);
50362 				match(DEFAULT_DATABASE);
50363 				setState(6719);
50364 				match(EQ_);
50365 				setState(6720);
50366 				databaseName();
50367 				}
50368 				break;
50369 			case DEFAULT_LANGUAGE:
50370 				enterOuterAlt(_localctx, 4);
50371 				{
50372 				setState(6721);
50373 				match(DEFAULT_LANGUAGE);
50374 				setState(6722);
50375 				match(EQ_);
50376 				setState(6723);
50377 				identifier();
50378 				}
50379 				break;
50380 			default:
50381 				throw new NoViableAltException(this);
50382 			}
50383 		}
50384 		catch (RecognitionException re) {
50385 			_localctx.exception = re;
50386 			_errHandler.reportError(this, re);
50387 			_errHandler.recover(this, re);
50388 		}
50389 		finally {
50390 			exitRule();
50391 		}
50392 		return _localctx;
50393 	}
50394 
50395 	public static class CreateLoginForAzureSynapseAnalyticsClauseContext extends ParserRuleContext {
50396 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50397 		public CreateLoginForAzureSynapseAnalyticsOptionListContext createLoginForAzureSynapseAnalyticsOptionList() {
50398 			return getRuleContext(CreateLoginForAzureSynapseAnalyticsOptionListContext.class,0);
50399 		}
50400 		public CreateLoginForAzureSynapseAnalyticsClauseContext(ParserRuleContext parent, int invokingState) {
50401 			super(parent, invokingState);
50402 		}
50403 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSynapseAnalyticsClause; }
50404 		@Override
50405 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50406 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSynapseAnalyticsClause(this);
50407 			else return visitor.visitChildren(this);
50408 		}
50409 	}
50410 
50411 	public final CreateLoginForAzureSynapseAnalyticsClauseContext createLoginForAzureSynapseAnalyticsClause() throws RecognitionException {
50412 		CreateLoginForAzureSynapseAnalyticsClauseContext _localctx = new CreateLoginForAzureSynapseAnalyticsClauseContext(_ctx, getState());
50413 		enterRule(_localctx, 932, RULE_createLoginForAzureSynapseAnalyticsClause);
50414 		try {
50415 			enterOuterAlt(_localctx, 1);
50416 			{
50417 			setState(6726);
50418 			match(WITH);
50419 			setState(6727);
50420 			createLoginForAzureSynapseAnalyticsOptionList();
50421 			}
50422 		}
50423 		catch (RecognitionException re) {
50424 			_localctx.exception = re;
50425 			_errHandler.reportError(this, re);
50426 			_errHandler.recover(this, re);
50427 		}
50428 		finally {
50429 			exitRule();
50430 		}
50431 		return _localctx;
50432 	}
50433 
50434 	public static class CreateLoginForAzureSynapseAnalyticsOptionListContext extends ParserRuleContext {
50435 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50436 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
50437 		public TerminalNode EQ_(int i) {
50438 			return getToken(SQLServerStatementParser.EQ_, i);
50439 		}
50440 		public StringLiteralsContext stringLiterals() {
50441 			return getRuleContext(StringLiteralsContext.class,0);
50442 		}
50443 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
50444 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
50445 		public SidContext sid() {
50446 			return getRuleContext(SidContext.class,0);
50447 		}
50448 		public CreateLoginForAzureSynapseAnalyticsOptionListContext(ParserRuleContext parent, int invokingState) {
50449 			super(parent, invokingState);
50450 		}
50451 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSynapseAnalyticsOptionList; }
50452 		@Override
50453 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50454 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSynapseAnalyticsOptionList(this);
50455 			else return visitor.visitChildren(this);
50456 		}
50457 	}
50458 
50459 	public final CreateLoginForAzureSynapseAnalyticsOptionListContext createLoginForAzureSynapseAnalyticsOptionList() throws RecognitionException {
50460 		CreateLoginForAzureSynapseAnalyticsOptionListContext _localctx = new CreateLoginForAzureSynapseAnalyticsOptionListContext(_ctx, getState());
50461 		enterRule(_localctx, 934, RULE_createLoginForAzureSynapseAnalyticsOptionList);
50462 		int _la;
50463 		try {
50464 			enterOuterAlt(_localctx, 1);
50465 			{
50466 			setState(6729);
50467 			match(PASSWORD);
50468 			setState(6730);
50469 			match(EQ_);
50470 			setState(6731);
50471 			stringLiterals();
50472 			setState(6736);
50473 			_errHandler.sync(this);
50474 			_la = _input.LA(1);
50475 			if (_la==COMMA_) {
50476 				{
50477 				setState(6732);
50478 				match(COMMA_);
50479 				setState(6733);
50480 				match(SID);
50481 				setState(6734);
50482 				match(EQ_);
50483 				setState(6735);
50484 				sid();
50485 				}
50486 			}
50487 
50488 			}
50489 		}
50490 		catch (RecognitionException re) {
50491 			_localctx.exception = re;
50492 			_errHandler.reportError(this, re);
50493 			_errHandler.recover(this, re);
50494 		}
50495 		finally {
50496 			exitRule();
50497 		}
50498 		return _localctx;
50499 	}
50500 
50501 	public static class CreateLoginForAnalyticsPlatformSystemClauseContext extends ParserRuleContext {
50502 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50503 		public CreateLoginForAnalyticsPlatformSystemOptionListContext createLoginForAnalyticsPlatformSystemOptionList() {
50504 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemOptionListContext.class,0);
50505 		}
50506 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50507 		public TerminalNode WINDOWS() { return getToken(SQLServerStatementParser.WINDOWS, 0); }
50508 		public CreateLoginForAnalyticsPlatformSystemClauseContext(ParserRuleContext parent, int invokingState) {
50509 			super(parent, invokingState);
50510 		}
50511 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemClause; }
50512 		@Override
50513 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50514 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemClause(this);
50515 			else return visitor.visitChildren(this);
50516 		}
50517 	}
50518 
50519 	public final CreateLoginForAnalyticsPlatformSystemClauseContext createLoginForAnalyticsPlatformSystemClause() throws RecognitionException {
50520 		CreateLoginForAnalyticsPlatformSystemClauseContext _localctx = new CreateLoginForAnalyticsPlatformSystemClauseContext(_ctx, getState());
50521 		enterRule(_localctx, 936, RULE_createLoginForAnalyticsPlatformSystemClause);
50522 		try {
50523 			setState(6742);
50524 			_errHandler.sync(this);
50525 			switch (_input.LA(1)) {
50526 			case WITH:
50527 				enterOuterAlt(_localctx, 1);
50528 				{
50529 				setState(6738);
50530 				match(WITH);
50531 				setState(6739);
50532 				createLoginForAnalyticsPlatformSystemOptionList();
50533 				}
50534 				break;
50535 			case FROM:
50536 				enterOuterAlt(_localctx, 2);
50537 				{
50538 				setState(6740);
50539 				match(FROM);
50540 				setState(6741);
50541 				match(WINDOWS);
50542 				}
50543 				break;
50544 			default:
50545 				throw new NoViableAltException(this);
50546 			}
50547 		}
50548 		catch (RecognitionException re) {
50549 			_localctx.exception = re;
50550 			_errHandler.reportError(this, re);
50551 			_errHandler.recover(this, re);
50552 		}
50553 		finally {
50554 			exitRule();
50555 		}
50556 		return _localctx;
50557 	}
50558 
50559 	public static class CreateLoginForAnalyticsPlatformSystemOptionListContext extends ParserRuleContext {
50560 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50561 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50562 		public StringLiteralsContext stringLiterals() {
50563 			return getRuleContext(StringLiteralsContext.class,0);
50564 		}
50565 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
50566 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50567 		public TerminalNode COMMA_(int i) {
50568 			return getToken(SQLServerStatementParser.COMMA_, i);
50569 		}
50570 		public List<CreateLoginForAnalyticsPlatformSystemOptionListClauseContext> createLoginForAnalyticsPlatformSystemOptionListClause() {
50571 			return getRuleContexts(CreateLoginForAnalyticsPlatformSystemOptionListClauseContext.class);
50572 		}
50573 		public CreateLoginForAnalyticsPlatformSystemOptionListClauseContext createLoginForAnalyticsPlatformSystemOptionListClause(int i) {
50574 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemOptionListClauseContext.class,i);
50575 		}
50576 		public CreateLoginForAnalyticsPlatformSystemOptionListContext(ParserRuleContext parent, int invokingState) {
50577 			super(parent, invokingState);
50578 		}
50579 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemOptionList; }
50580 		@Override
50581 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50582 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemOptionList(this);
50583 			else return visitor.visitChildren(this);
50584 		}
50585 	}
50586 
50587 	public final CreateLoginForAnalyticsPlatformSystemOptionListContext createLoginForAnalyticsPlatformSystemOptionList() throws RecognitionException {
50588 		CreateLoginForAnalyticsPlatformSystemOptionListContext _localctx = new CreateLoginForAnalyticsPlatformSystemOptionListContext(_ctx, getState());
50589 		enterRule(_localctx, 938, RULE_createLoginForAnalyticsPlatformSystemOptionList);
50590 		int _la;
50591 		try {
50592 			enterOuterAlt(_localctx, 1);
50593 			{
50594 			setState(6744);
50595 			match(PASSWORD);
50596 			setState(6745);
50597 			match(EQ_);
50598 			setState(6746);
50599 			stringLiterals();
50600 			setState(6748);
50601 			_errHandler.sync(this);
50602 			_la = _input.LA(1);
50603 			if (_la==MUST_CHANGE) {
50604 				{
50605 				setState(6747);
50606 				match(MUST_CHANGE);
50607 				}
50608 			}
50609 
50610 			setState(6759);
50611 			_errHandler.sync(this);
50612 			_la = _input.LA(1);
50613 			if (_la==COMMA_) {
50614 				{
50615 				setState(6750);
50616 				match(COMMA_);
50617 				setState(6751);
50618 				createLoginForAnalyticsPlatformSystemOptionListClause();
50619 				setState(6756);
50620 				_errHandler.sync(this);
50621 				_la = _input.LA(1);
50622 				while (_la==COMMA_) {
50623 					{
50624 					{
50625 					setState(6752);
50626 					match(COMMA_);
50627 					setState(6753);
50628 					createLoginForAnalyticsPlatformSystemOptionListClause();
50629 					}
50630 					}
50631 					setState(6758);
50632 					_errHandler.sync(this);
50633 					_la = _input.LA(1);
50634 				}
50635 				}
50636 			}
50637 
50638 			}
50639 		}
50640 		catch (RecognitionException re) {
50641 			_localctx.exception = re;
50642 			_errHandler.reportError(this, re);
50643 			_errHandler.recover(this, re);
50644 		}
50645 		finally {
50646 			exitRule();
50647 		}
50648 		return _localctx;
50649 	}
50650 
50651 	public static class CreateLoginForAnalyticsPlatformSystemOptionListClauseContext extends ParserRuleContext {
50652 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
50653 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50654 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
50655 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
50656 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
50657 		public CreateLoginForAnalyticsPlatformSystemOptionListClauseContext(ParserRuleContext parent, int invokingState) {
50658 			super(parent, invokingState);
50659 		}
50660 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemOptionListClause; }
50661 		@Override
50662 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50663 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemOptionListClause(this);
50664 			else return visitor.visitChildren(this);
50665 		}
50666 	}
50667 
50668 	public final CreateLoginForAnalyticsPlatformSystemOptionListClauseContext createLoginForAnalyticsPlatformSystemOptionListClause() throws RecognitionException {
50669 		CreateLoginForAnalyticsPlatformSystemOptionListClauseContext _localctx = new CreateLoginForAnalyticsPlatformSystemOptionListClauseContext(_ctx, getState());
50670 		enterRule(_localctx, 940, RULE_createLoginForAnalyticsPlatformSystemOptionListClause);
50671 		int _la;
50672 		try {
50673 			setState(6767);
50674 			_errHandler.sync(this);
50675 			switch (_input.LA(1)) {
50676 			case CHECK_EXPIRATION:
50677 				enterOuterAlt(_localctx, 1);
50678 				{
50679 				setState(6761);
50680 				match(CHECK_EXPIRATION);
50681 				setState(6762);
50682 				match(EQ_);
50683 				setState(6763);
50684 				_la = _input.LA(1);
50685 				if ( !(_la==ON || _la==OFF) ) {
50686 				_errHandler.recoverInline(this);
50687 				}
50688 				else {
50689 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
50690 					_errHandler.reportMatch(this);
50691 					consume();
50692 				}
50693 				}
50694 				break;
50695 			case CHECK_POLICY:
50696 				enterOuterAlt(_localctx, 2);
50697 				{
50698 				setState(6764);
50699 				match(CHECK_POLICY);
50700 				setState(6765);
50701 				match(EQ_);
50702 				setState(6766);
50703 				_la = _input.LA(1);
50704 				if ( !(_la==ON || _la==OFF) ) {
50705 				_errHandler.recoverInline(this);
50706 				}
50707 				else {
50708 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
50709 					_errHandler.reportMatch(this);
50710 					consume();
50711 				}
50712 				}
50713 				break;
50714 			default:
50715 				throw new NoViableAltException(this);
50716 			}
50717 		}
50718 		catch (RecognitionException re) {
50719 			_localctx.exception = re;
50720 			_errHandler.reportError(this, re);
50721 			_errHandler.recover(this, re);
50722 		}
50723 		finally {
50724 			exitRule();
50725 		}
50726 		return _localctx;
50727 	}
50728 
50729 	public static class DropLoginContext extends ParserRuleContext {
50730 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
50731 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
50732 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
50733 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
50734 		}
50735 		public DropLoginContext(ParserRuleContext parent, int invokingState) {
50736 			super(parent, invokingState);
50737 		}
50738 		@Override public int getRuleIndex() { return RULE_dropLogin; }
50739 		@Override
50740 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50741 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropLogin(this);
50742 			else return visitor.visitChildren(this);
50743 		}
50744 	}
50745 
50746 	public final DropLoginContext dropLogin() throws RecognitionException {
50747 		DropLoginContext _localctx = new DropLoginContext(_ctx, getState());
50748 		enterRule(_localctx, 942, RULE_dropLogin);
50749 		try {
50750 			enterOuterAlt(_localctx, 1);
50751 			{
50752 			setState(6769);
50753 			match(DROP);
50754 			setState(6770);
50755 			match(LOGIN);
50756 			setState(6771);
50757 			ignoredNameIdentifier();
50758 			}
50759 		}
50760 		catch (RecognitionException re) {
50761 			_localctx.exception = re;
50762 			_errHandler.reportError(this, re);
50763 			_errHandler.recover(this, re);
50764 		}
50765 		finally {
50766 			exitRule();
50767 		}
50768 		return _localctx;
50769 	}
50770 
50771 	public static class AlterLoginContext extends ParserRuleContext {
50772 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
50773 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
50774 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
50775 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
50776 		}
50777 		public StatusOptionClauseContext statusOptionClause() {
50778 			return getRuleContext(StatusOptionClauseContext.class,0);
50779 		}
50780 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50781 		public List<SetOptionClauseContext> setOptionClause() {
50782 			return getRuleContexts(SetOptionClauseContext.class);
50783 		}
50784 		public SetOptionClauseContext setOptionClause(int i) {
50785 			return getRuleContext(SetOptionClauseContext.class,i);
50786 		}
50787 		public CryptographicCredentialsOptionClauseContext cryptographicCredentialsOptionClause() {
50788 			return getRuleContext(CryptographicCredentialsOptionClauseContext.class,0);
50789 		}
50790 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50791 		public TerminalNode COMMA_(int i) {
50792 			return getToken(SQLServerStatementParser.COMMA_, i);
50793 		}
50794 		public AlterLoginContext(ParserRuleContext parent, int invokingState) {
50795 			super(parent, invokingState);
50796 		}
50797 		@Override public int getRuleIndex() { return RULE_alterLogin; }
50798 		@Override
50799 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50800 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterLogin(this);
50801 			else return visitor.visitChildren(this);
50802 		}
50803 	}
50804 
50805 	public final AlterLoginContext alterLogin() throws RecognitionException {
50806 		AlterLoginContext _localctx = new AlterLoginContext(_ctx, getState());
50807 		enterRule(_localctx, 944, RULE_alterLogin);
50808 		int _la;
50809 		try {
50810 			enterOuterAlt(_localctx, 1);
50811 			{
50812 			setState(6773);
50813 			match(ALTER);
50814 			setState(6774);
50815 			match(LOGIN);
50816 			setState(6775);
50817 			ignoredNameIdentifier();
50818 			setState(6787);
50819 			_errHandler.sync(this);
50820 			switch (_input.LA(1)) {
50821 			case ENABLE:
50822 			case DISABLE:
50823 				{
50824 				setState(6776);
50825 				statusOptionClause();
50826 				}
50827 				break;
50828 			case WITH:
50829 				{
50830 				setState(6777);
50831 				match(WITH);
50832 				setState(6778);
50833 				setOptionClause();
50834 				setState(6783);
50835 				_errHandler.sync(this);
50836 				_la = _input.LA(1);
50837 				while (_la==COMMA_) {
50838 					{
50839 					{
50840 					setState(6779);
50841 					match(COMMA_);
50842 					setState(6780);
50843 					setOptionClause();
50844 					}
50845 					}
50846 					setState(6785);
50847 					_errHandler.sync(this);
50848 					_la = _input.LA(1);
50849 				}
50850 				}
50851 				break;
50852 			case DROP:
50853 			case ADD:
50854 				{
50855 				setState(6786);
50856 				cryptographicCredentialsOptionClause();
50857 				}
50858 				break;
50859 			default:
50860 				throw new NoViableAltException(this);
50861 			}
50862 			}
50863 		}
50864 		catch (RecognitionException re) {
50865 			_localctx.exception = re;
50866 			_errHandler.reportError(this, re);
50867 			_errHandler.recover(this, re);
50868 		}
50869 		finally {
50870 			exitRule();
50871 		}
50872 		return _localctx;
50873 	}
50874 
50875 	public static class StatusOptionClauseContext extends ParserRuleContext {
50876 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
50877 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
50878 		public StatusOptionClauseContext(ParserRuleContext parent, int invokingState) {
50879 			super(parent, invokingState);
50880 		}
50881 		@Override public int getRuleIndex() { return RULE_statusOptionClause; }
50882 		@Override
50883 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50884 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatusOptionClause(this);
50885 			else return visitor.visitChildren(this);
50886 		}
50887 	}
50888 
50889 	public final StatusOptionClauseContext statusOptionClause() throws RecognitionException {
50890 		StatusOptionClauseContext _localctx = new StatusOptionClauseContext(_ctx, getState());
50891 		enterRule(_localctx, 946, RULE_statusOptionClause);
50892 		int _la;
50893 		try {
50894 			enterOuterAlt(_localctx, 1);
50895 			{
50896 			setState(6789);
50897 			_la = _input.LA(1);
50898 			if ( !(_la==ENABLE || _la==DISABLE) ) {
50899 			_errHandler.recoverInline(this);
50900 			}
50901 			else {
50902 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
50903 				_errHandler.reportMatch(this);
50904 				consume();
50905 			}
50906 			}
50907 		}
50908 		catch (RecognitionException re) {
50909 			_localctx.exception = re;
50910 			_errHandler.reportError(this, re);
50911 			_errHandler.recover(this, re);
50912 		}
50913 		finally {
50914 			exitRule();
50915 		}
50916 		return _localctx;
50917 	}
50918 
50919 	public static class SetOptionClauseContext extends ParserRuleContext {
50920 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50921 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
50922 		public TerminalNode EQ_(int i) {
50923 			return getToken(SQLServerStatementParser.EQ_, i);
50924 		}
50925 		public List<StringLiteralsContext> stringLiterals() {
50926 			return getRuleContexts(StringLiteralsContext.class);
50927 		}
50928 		public StringLiteralsContext stringLiterals(int i) {
50929 			return getRuleContext(StringLiteralsContext.class,i);
50930 		}
50931 		public HashedPasswordContext hashedPassword() {
50932 			return getRuleContext(HashedPasswordContext.class,0);
50933 		}
50934 		public TerminalNode HASHED() { return getToken(SQLServerStatementParser.HASHED, 0); }
50935 		public TerminalNode OLD_PASSWORD() { return getToken(SQLServerStatementParser.OLD_PASSWORD, 0); }
50936 		public List<PasswordOptionClauseContext> passwordOptionClause() {
50937 			return getRuleContexts(PasswordOptionClauseContext.class);
50938 		}
50939 		public PasswordOptionClauseContext passwordOptionClause(int i) {
50940 			return getRuleContext(PasswordOptionClauseContext.class,i);
50941 		}
50942 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
50943 		public DatabaseNameContext databaseName() {
50944 			return getRuleContext(DatabaseNameContext.class,0);
50945 		}
50946 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
50947 		public IdentifierContext identifier() {
50948 			return getRuleContext(IdentifierContext.class,0);
50949 		}
50950 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
50951 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
50952 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
50953 		}
50954 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
50955 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
50956 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
50957 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
50958 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
50959 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
50960 		public SetOptionClauseContext(ParserRuleContext parent, int invokingState) {
50961 			super(parent, invokingState);
50962 		}
50963 		@Override public int getRuleIndex() { return RULE_setOptionClause; }
50964 		@Override
50965 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50966 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetOptionClause(this);
50967 			else return visitor.visitChildren(this);
50968 		}
50969 	}
50970 
50971 	public final SetOptionClauseContext setOptionClause() throws RecognitionException {
50972 		SetOptionClauseContext _localctx = new SetOptionClauseContext(_ctx, getState());
50973 		enterRule(_localctx, 948, RULE_setOptionClause);
50974 		int _la;
50975 		try {
50976 			setState(6828);
50977 			_errHandler.sync(this);
50978 			switch (_input.LA(1)) {
50979 			case PASSWORD:
50980 				enterOuterAlt(_localctx, 1);
50981 				{
50982 				setState(6791);
50983 				match(PASSWORD);
50984 				setState(6792);
50985 				match(EQ_);
50986 				setState(6797);
50987 				_errHandler.sync(this);
50988 				switch (_input.LA(1)) {
50989 				case STRING_:
50990 				case NCHAR_TEXT:
50991 					{
50992 					setState(6793);
50993 					stringLiterals();
50994 					}
50995 					break;
50996 				case HEX_DIGIT_:
50997 					{
50998 					setState(6794);
50999 					hashedPassword();
51000 					setState(6795);
51001 					match(HASHED);
51002 					}
51003 					break;
51004 				default:
51005 					throw new NoViableAltException(this);
51006 				}
51007 				setState(6806);
51008 				_errHandler.sync(this);
51009 				switch (_input.LA(1)) {
51010 				case OLD_PASSWORD:
51011 					{
51012 					setState(6799);
51013 					match(OLD_PASSWORD);
51014 					setState(6800);
51015 					match(EQ_);
51016 					setState(6801);
51017 					stringLiterals();
51018 					}
51019 					break;
51020 				case MUST_CHANGE:
51021 				case UNLOCK:
51022 					{
51023 					setState(6802);
51024 					passwordOptionClause();
51025 					setState(6804);
51026 					_errHandler.sync(this);
51027 					_la = _input.LA(1);
51028 					if (_la==MUST_CHANGE || _la==UNLOCK) {
51029 						{
51030 						setState(6803);
51031 						passwordOptionClause();
51032 						}
51033 					}
51034 
51035 					}
51036 					break;
51037 				case EOF:
51038 				case COMMA_:
51039 				case SEMI_:
51040 					break;
51041 				default:
51042 					break;
51043 				}
51044 				}
51045 				break;
51046 			case DEFAULT_DATABASE:
51047 				enterOuterAlt(_localctx, 2);
51048 				{
51049 				setState(6808);
51050 				match(DEFAULT_DATABASE);
51051 				setState(6809);
51052 				match(EQ_);
51053 				setState(6810);
51054 				databaseName();
51055 				}
51056 				break;
51057 			case DEFAULT_LANGUAGE:
51058 				enterOuterAlt(_localctx, 3);
51059 				{
51060 				setState(6811);
51061 				match(DEFAULT_LANGUAGE);
51062 				setState(6812);
51063 				match(EQ_);
51064 				setState(6813);
51065 				identifier();
51066 				}
51067 				break;
51068 			case NAME:
51069 				enterOuterAlt(_localctx, 4);
51070 				{
51071 				setState(6814);
51072 				match(NAME);
51073 				setState(6815);
51074 				match(EQ_);
51075 				setState(6816);
51076 				ignoredNameIdentifier();
51077 				}
51078 				break;
51079 			case CHECK_POLICY:
51080 				enterOuterAlt(_localctx, 5);
51081 				{
51082 				setState(6817);
51083 				match(CHECK_POLICY);
51084 				setState(6818);
51085 				match(EQ_);
51086 				setState(6819);
51087 				_la = _input.LA(1);
51088 				if ( !(_la==ON || _la==OFF) ) {
51089 				_errHandler.recoverInline(this);
51090 				}
51091 				else {
51092 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51093 					_errHandler.reportMatch(this);
51094 					consume();
51095 				}
51096 				}
51097 				break;
51098 			case CHECK_EXPIRATION:
51099 				enterOuterAlt(_localctx, 6);
51100 				{
51101 				setState(6820);
51102 				match(CHECK_EXPIRATION);
51103 				setState(6821);
51104 				match(EQ_);
51105 				setState(6822);
51106 				_la = _input.LA(1);
51107 				if ( !(_la==ON || _la==OFF) ) {
51108 				_errHandler.recoverInline(this);
51109 				}
51110 				else {
51111 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51112 					_errHandler.reportMatch(this);
51113 					consume();
51114 				}
51115 				}
51116 				break;
51117 			case CREDENTIAL:
51118 				enterOuterAlt(_localctx, 7);
51119 				{
51120 				setState(6823);
51121 				match(CREDENTIAL);
51122 				setState(6824);
51123 				match(EQ_);
51124 				setState(6825);
51125 				identifier();
51126 				}
51127 				break;
51128 			case NO:
51129 				enterOuterAlt(_localctx, 8);
51130 				{
51131 				setState(6826);
51132 				match(NO);
51133 				setState(6827);
51134 				match(CREDENTIAL);
51135 				}
51136 				break;
51137 			default:
51138 				throw new NoViableAltException(this);
51139 			}
51140 		}
51141 		catch (RecognitionException re) {
51142 			_localctx.exception = re;
51143 			_errHandler.reportError(this, re);
51144 			_errHandler.recover(this, re);
51145 		}
51146 		finally {
51147 			exitRule();
51148 		}
51149 		return _localctx;
51150 	}
51151 
51152 	public static class PasswordOptionClauseContext extends ParserRuleContext {
51153 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
51154 		public TerminalNode UNLOCK() { return getToken(SQLServerStatementParser.UNLOCK, 0); }
51155 		public PasswordOptionClauseContext(ParserRuleContext parent, int invokingState) {
51156 			super(parent, invokingState);
51157 		}
51158 		@Override public int getRuleIndex() { return RULE_passwordOptionClause; }
51159 		@Override
51160 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51161 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPasswordOptionClause(this);
51162 			else return visitor.visitChildren(this);
51163 		}
51164 	}
51165 
51166 	public final PasswordOptionClauseContext passwordOptionClause() throws RecognitionException {
51167 		PasswordOptionClauseContext _localctx = new PasswordOptionClauseContext(_ctx, getState());
51168 		enterRule(_localctx, 950, RULE_passwordOptionClause);
51169 		int _la;
51170 		try {
51171 			enterOuterAlt(_localctx, 1);
51172 			{
51173 			setState(6830);
51174 			_la = _input.LA(1);
51175 			if ( !(_la==MUST_CHANGE || _la==UNLOCK) ) {
51176 			_errHandler.recoverInline(this);
51177 			}
51178 			else {
51179 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51180 				_errHandler.reportMatch(this);
51181 				consume();
51182 			}
51183 			}
51184 		}
51185 		catch (RecognitionException re) {
51186 			_localctx.exception = re;
51187 			_errHandler.reportError(this, re);
51188 			_errHandler.recover(this, re);
51189 		}
51190 		finally {
51191 			exitRule();
51192 		}
51193 		return _localctx;
51194 	}
51195 
51196 	public static class CryptographicCredentialsOptionClauseContext extends ParserRuleContext {
51197 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
51198 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
51199 		public IdentifierContext identifier() {
51200 			return getRuleContext(IdentifierContext.class,0);
51201 		}
51202 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
51203 		public CryptographicCredentialsOptionClauseContext(ParserRuleContext parent, int invokingState) {
51204 			super(parent, invokingState);
51205 		}
51206 		@Override public int getRuleIndex() { return RULE_cryptographicCredentialsOptionClause; }
51207 		@Override
51208 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51209 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCryptographicCredentialsOptionClause(this);
51210 			else return visitor.visitChildren(this);
51211 		}
51212 	}
51213 
51214 	public final CryptographicCredentialsOptionClauseContext cryptographicCredentialsOptionClause() throws RecognitionException {
51215 		CryptographicCredentialsOptionClauseContext _localctx = new CryptographicCredentialsOptionClauseContext(_ctx, getState());
51216 		enterRule(_localctx, 952, RULE_cryptographicCredentialsOptionClause);
51217 		try {
51218 			setState(6838);
51219 			_errHandler.sync(this);
51220 			switch (_input.LA(1)) {
51221 			case ADD:
51222 				enterOuterAlt(_localctx, 1);
51223 				{
51224 				setState(6832);
51225 				match(ADD);
51226 				setState(6833);
51227 				match(CREDENTIAL);
51228 				setState(6834);
51229 				identifier();
51230 				}
51231 				break;
51232 			case DROP:
51233 				enterOuterAlt(_localctx, 2);
51234 				{
51235 				setState(6835);
51236 				match(DROP);
51237 				setState(6836);
51238 				match(CREDENTIAL);
51239 				setState(6837);
51240 				identifier();
51241 				}
51242 				break;
51243 			default:
51244 				throw new NoViableAltException(this);
51245 			}
51246 		}
51247 		catch (RecognitionException re) {
51248 			_localctx.exception = re;
51249 			_errHandler.reportError(this, re);
51250 			_errHandler.recover(this, re);
51251 		}
51252 		finally {
51253 			exitRule();
51254 		}
51255 		return _localctx;
51256 	}
51257 
51258 	public static class RevertContext extends ParserRuleContext {
51259 		public TerminalNode REVERT() { return getToken(SQLServerStatementParser.REVERT, 0); }
51260 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51261 		public TerminalNode COOKIE() { return getToken(SQLServerStatementParser.COOKIE, 0); }
51262 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51263 		public VariableNameContext variableName() {
51264 			return getRuleContext(VariableNameContext.class,0);
51265 		}
51266 		public RevertContext(ParserRuleContext parent, int invokingState) {
51267 			super(parent, invokingState);
51268 		}
51269 		@Override public int getRuleIndex() { return RULE_revert; }
51270 		@Override
51271 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51272 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevert(this);
51273 			else return visitor.visitChildren(this);
51274 		}
51275 	}
51276 
51277 	public final RevertContext revert() throws RecognitionException {
51278 		RevertContext _localctx = new RevertContext(_ctx, getState());
51279 		enterRule(_localctx, 954, RULE_revert);
51280 		int _la;
51281 		try {
51282 			enterOuterAlt(_localctx, 1);
51283 			{
51284 			setState(6840);
51285 			match(REVERT);
51286 			setState(6845);
51287 			_errHandler.sync(this);
51288 			_la = _input.LA(1);
51289 			if (_la==WITH) {
51290 				{
51291 				setState(6841);
51292 				match(WITH);
51293 				setState(6842);
51294 				match(COOKIE);
51295 				setState(6843);
51296 				match(EQ_);
51297 				setState(6844);
51298 				variableName();
51299 				}
51300 			}
51301 
51302 			}
51303 		}
51304 		catch (RecognitionException re) {
51305 			_localctx.exception = re;
51306 			_errHandler.reportError(this, re);
51307 			_errHandler.recover(this, re);
51308 		}
51309 		finally {
51310 			exitRule();
51311 		}
51312 		return _localctx;
51313 	}
51314 
51315 	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
51316 		switch (ruleIndex) {
51317 		case 49:
51318 			return expr_sempred((ExprContext)_localctx, predIndex);
51319 		case 53:
51320 			return booleanPrimary_sempred((BooleanPrimaryContext)_localctx, predIndex);
51321 		case 56:
51322 			return bitExpr_sempred((BitExprContext)_localctx, predIndex);
51323 		case 57:
51324 			return simpleExpr_sempred((SimpleExprContext)_localctx, predIndex);
51325 		}
51326 		return true;
51327 	}
51328 	private boolean expr_sempred(ExprContext _localctx, int predIndex) {
51329 		switch (predIndex) {
51330 		case 0:
51331 			return precpred(_ctx, 5);
51332 		case 1:
51333 			return precpred(_ctx, 4);
51334 		}
51335 		return true;
51336 	}
51337 	private boolean booleanPrimary_sempred(BooleanPrimaryContext _localctx, int predIndex) {
51338 		switch (predIndex) {
51339 		case 2:
51340 			return precpred(_ctx, 5);
51341 		case 3:
51342 			return precpred(_ctx, 4);
51343 		case 4:
51344 			return precpred(_ctx, 3);
51345 		case 5:
51346 			return precpred(_ctx, 2);
51347 		}
51348 		return true;
51349 	}
51350 	private boolean bitExpr_sempred(BitExprContext _localctx, int predIndex) {
51351 		switch (predIndex) {
51352 		case 6:
51353 			return precpred(_ctx, 11);
51354 		case 7:
51355 			return precpred(_ctx, 10);
51356 		case 8:
51357 			return precpred(_ctx, 9);
51358 		case 9:
51359 			return precpred(_ctx, 8);
51360 		case 10:
51361 			return precpred(_ctx, 7);
51362 		case 11:
51363 			return precpred(_ctx, 6);
51364 		case 12:
51365 			return precpred(_ctx, 5);
51366 		case 13:
51367 			return precpred(_ctx, 4);
51368 		case 14:
51369 			return precpred(_ctx, 3);
51370 		case 15:
51371 			return precpred(_ctx, 2);
51372 		}
51373 		return true;
51374 	}
51375 	private boolean simpleExpr_sempred(SimpleExprContext _localctx, int predIndex) {
51376 		switch (predIndex) {
51377 		case 16:
51378 			return precpred(_ctx, 7);
51379 		}
51380 		return true;
51381 	}
51382 
51383 	private static final String _serializedATNSegment0 =
51384 		"\u0004\u0001\u02b5\u1ac0\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
51385 		"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
51386 		"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
51387 		"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
51388 		"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
51389 		"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
51390 		"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
51391 		"\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
51392 		"\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+
51393 		"\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+
51394 		"\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+
51395 		"\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+
51396 		"\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+
51397 		",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+
51398 		"1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+
51399 		"6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+
51400 		";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+
51401 		"@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+
51402 		"E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
51403 		"J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
51404 		"O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
51405 		"T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+
51406 		"Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+
51407 		"^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+
51408 		"c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+
51409 		"h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+
51410 		"m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+
51411 		"r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+
51412 		"w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+
51413 		"|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+
51414 		"\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+
51415 		"\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+
51416 		"\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+
51417 		"\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+
51418 		"\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+
51419 		"\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+
51420 		"\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+
51421 		"\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+
51422 		"\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+
51423 		"\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+
51424 		"\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+
51425 		"\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+
51426 		"\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+
51427 		"\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+
51428 		"\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+
51429 		"\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+
51430 		"\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+
51431 		"\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+
51432 		"\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+
51433 		"\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+
51434 		"\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+
51435 		"\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+
51436 		"\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+
51437 		"\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+
51438 		"\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+
51439 		"\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+
51440 		"\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+
51441 		"\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+
51442 		"\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+
51443 		"\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+
51444 		"\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+
51445 		"\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+
51446 		"\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+
51447 		"\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007"+
51448 		"\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007"+
51449 		"\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007"+
51450 		"\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee\u0002\u00ef\u0007"+
51451 		"\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1\u0002\u00f2\u0007"+
51452 		"\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4\u0002\u00f5\u0007"+
51453 		"\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7\u0002\u00f8\u0007"+
51454 		"\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa\u0002\u00fb\u0007"+
51455 		"\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd\u0002\u00fe\u0007"+
51456 		"\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100\u0002\u0101\u0007"+
51457 		"\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103\u0002\u0104\u0007"+
51458 		"\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106\u0002\u0107\u0007"+
51459 		"\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109\u0002\u010a\u0007"+
51460 		"\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c\u0002\u010d\u0007"+
51461 		"\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f\u0002\u0110\u0007"+
51462 		"\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112\u0002\u0113\u0007"+
51463 		"\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115\u0002\u0116\u0007"+
51464 		"\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118\u0002\u0119\u0007"+
51465 		"\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b\u0002\u011c\u0007"+
51466 		"\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e\u0002\u011f\u0007"+
51467 		"\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121\u0002\u0122\u0007"+
51468 		"\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124\u0002\u0125\u0007"+
51469 		"\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127\u0002\u0128\u0007"+
51470 		"\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a\u0002\u012b\u0007"+
51471 		"\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d\u0002\u012e\u0007"+
51472 		"\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130\u0002\u0131\u0007"+
51473 		"\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133\u0002\u0134\u0007"+
51474 		"\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136\u0002\u0137\u0007"+
51475 		"\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139\u0002\u013a\u0007"+
51476 		"\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c\u0002\u013d\u0007"+
51477 		"\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f\u0002\u0140\u0007"+
51478 		"\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142\u0002\u0143\u0007"+
51479 		"\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145\u0002\u0146\u0007"+
51480 		"\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148\u0002\u0149\u0007"+
51481 		"\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b\u0002\u014c\u0007"+
51482 		"\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e\u0002\u014f\u0007"+
51483 		"\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151\u0002\u0152\u0007"+
51484 		"\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154\u0002\u0155\u0007"+
51485 		"\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157\u0002\u0158\u0007"+
51486 		"\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a\u0002\u015b\u0007"+
51487 		"\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d\u0002\u015e\u0007"+
51488 		"\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160\u0002\u0161\u0007"+
51489 		"\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163\u0002\u0164\u0007"+
51490 		"\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166\u0002\u0167\u0007"+
51491 		"\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169\u0002\u016a\u0007"+
51492 		"\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c\u0002\u016d\u0007"+
51493 		"\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f\u0002\u0170\u0007"+
51494 		"\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172\u0002\u0173\u0007"+
51495 		"\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175\u0002\u0176\u0007"+
51496 		"\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178\u0002\u0179\u0007"+
51497 		"\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b\u0002\u017c\u0007"+
51498 		"\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e\u0002\u017f\u0007"+
51499 		"\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181\u0002\u0182\u0007"+
51500 		"\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184\u0002\u0185\u0007"+
51501 		"\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187\u0002\u0188\u0007"+
51502 		"\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a\u0002\u018b\u0007"+
51503 		"\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d\u0002\u018e\u0007"+
51504 		"\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190\u0002\u0191\u0007"+
51505 		"\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193\u0002\u0194\u0007"+
51506 		"\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196\u0002\u0197\u0007"+
51507 		"\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199\u0002\u019a\u0007"+
51508 		"\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c\u0002\u019d\u0007"+
51509 		"\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f\u0002\u01a0\u0007"+
51510 		"\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2\u0002\u01a3\u0007"+
51511 		"\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5\u0002\u01a6\u0007"+
51512 		"\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8\u0002\u01a9\u0007"+
51513 		"\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab\u0002\u01ac\u0007"+
51514 		"\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae\u0002\u01af\u0007"+
51515 		"\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1\u0002\u01b2\u0007"+
51516 		"\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4\u0002\u01b5\u0007"+
51517 		"\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7\u0002\u01b8\u0007"+
51518 		"\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba\u0002\u01bb\u0007"+
51519 		"\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd\u0002\u01be\u0007"+
51520 		"\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0\u0002\u01c1\u0007"+
51521 		"\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3\u0002\u01c4\u0007"+
51522 		"\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6\u0002\u01c7\u0007"+
51523 		"\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9\u0002\u01ca\u0007"+
51524 		"\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc\u0002\u01cd\u0007"+
51525 		"\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf\u0002\u01d0\u0007"+
51526 		"\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2\u0002\u01d3\u0007"+
51527 		"\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5\u0002\u01d6\u0007"+
51528 		"\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8\u0002\u01d9\u0007"+
51529 		"\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db\u0002\u01dc\u0007"+
51530 		"\u01dc\u0002\u01dd\u0007\u01dd\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
51531 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
51532 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
51533 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
51534 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
51535 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
51536 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
51537 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
51538 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
51539 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
51540 		"\u0000\u0003\u0000\u03f7\b\u0000\u0001\u0000\u0003\u0000\u03fa\b\u0000"+
51541 		"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
51542 		"\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+
51543 		"\u0001\u0002\u0001\u0002\u0003\u0002\u040a\b\u0002\u0001\u0003\u0001\u0003"+
51544 		"\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+
51545 		"\u0001\u0005\u0001\u0005\u0003\u0005\u0416\b\u0005\u0001\u0005\u0001\u0005"+
51546 		"\u0001\u0005\u0001\u0005\u0003\u0005\u041c\b\u0005\u0003\u0005\u041e\b"+
51547 		"\u0005\u0003\u0005\u0420\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+
51548 		"\u0006\u0001\u0006\u0003\u0006\u0427\b\u0006\u0001\u0007\u0001\u0007\u0001"+
51549 		"\u0007\u0001\u0007\u0003\u0007\u042d\b\u0007\u0003\u0007\u042f\b\u0007"+
51550 		"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
51551 		"\u0003\u0007\u0437\b\u0007\u0001\b\u0001\b\u0003\b\u043b\b\b\u0001\t\u0001"+
51552 		"\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u0443\b\t\u0001\n\u0001\n\u0003"+
51553 		"\n\u0447\b\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b"+
51554 		"\u044d\b\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r"+
51555 		"\u0001\r\u0001\r\u0003\r\u0458\b\r\u0001\u000e\u0001\u000e\u0001\u000f"+
51556 		"\u0003\u000f\u045d\b\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010"+
51557 		"\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010"+
51558 		"\u0468\b\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0013"+
51559 		"\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0003\u0015"+
51560 		"\u0474\b\u0015\u0001\u0016\u0001\u0016\u0003\u0016\u0478\b\u0016\u0001"+
51561 		"\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001"+
51562 		"\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0003\u001b\u0485"+
51563 		"\b\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0003"+
51564 		"\u001c\u048c\b\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u0491"+
51565 		"\b\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0003\u001d\u0496\b\u001d"+
51566 		"\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e"+
51567 		"\u049d\b\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f"+
51568 		"\u0003\u001f\u04a4\b\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001"+
51569 		" \u0001 \u0001 \u0003 \u04ad\b \u0001 \u0001 \u0001 \u0003 \u04b2\b \u0003"+
51570 		" \u04b4\b \u0001 \u0001 \u0001!\u0001!\u0001!\u0003!\u04bb\b!\u0001!\u0001"+
51571 		"!\u0001\"\u0001\"\u0001#\u0001#\u0001$\u0001$\u0001$\u0003$\u04c6\b$\u0001"+
51572 		"$\u0001$\u0003$\u04ca\b$\u0001%\u0001%\u0001%\u0001%\u0001%\u0001&\u0001"+
51573 		"&\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0005(\u04d9\b(\n(\f(\u04dc"+
51574 		"\t(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0005)\u04e4\b)\n)\f)\u04e7"+
51575 		"\t)\u0001)\u0001)\u0001*\u0003*\u04ec\b*\u0001*\u0001*\u0001*\u0005*\u04f1"+
51576 		"\b*\n*\f*\u04f4\t*\u0001*\u0003*\u04f7\b*\u0001+\u0001+\u0001,\u0001,"+
51577 		"\u0001-\u0001-\u0001.\u0001.\u0003.\u0501\b.\u0001/\u0001/\u0001/\u0001"+
51578 		"/\u0003/\u0507\b/\u0003/\u0509\b/\u0001/\u0001/\u00010\u00030\u050e\b"+
51579 		"0\u00010\u00010\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u0001"+
51580 		"1\u00011\u00031\u051b\b1\u00011\u00011\u00011\u00011\u00011\u00011\u0001"+
51581 		"1\u00011\u00051\u0525\b1\n1\f1\u0528\t1\u00012\u00012\u00013\u00013\u0001"+
51582 		"4\u00014\u00015\u00015\u00015\u00015\u00015\u00015\u00035\u0536\b5\u0001"+
51583 		"5\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u0001"+
51584 		"5\u00015\u00015\u00055\u0545\b5\n5\f5\u0548\t5\u00016\u00016\u00017\u0001"+
51585 		"7\u00037\u054e\b7\u00017\u00017\u00017\u00017\u00017\u00037\u0555\b7\u0001"+
51586 		"7\u00017\u00017\u00017\u00017\u00057\u055c\b7\n7\f7\u055f\t7\u00017\u0001"+
51587 		"7\u00017\u00017\u00037\u0565\b7\u00017\u00017\u00017\u00017\u00017\u0001"+
51588 		"7\u00017\u00037\u056e\b7\u00017\u00017\u00017\u00017\u00037\u0574\b7\u0001"+
51589 		"7\u00037\u0577\b7\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+
51590 		"8\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+
51591 		"8\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+
51592 		"8\u00018\u00018\u00018\u00018\u00018\u00058\u059a\b8\n8\f8\u059d\t8\u0001"+
51593 		"9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00039\u05a8"+
51594 		"\b9\u00019\u00019\u00019\u00019\u00059\u05ae\b9\n9\f9\u05b1\t9\u00019"+
51595 		"\u00019\u00019\u00039\u05b6\b9\u00019\u00019\u00019\u00019\u00019\u0001"+
51596 		"9\u00019\u00019\u00039\u05c0\b9\u00019\u00019\u00019\u00059\u05c5\b9\n"+
51597 		"9\f9\u05c8\t9\u0001:\u0001:\u0001:\u0003:\u05cd\b:\u0001;\u0001;\u0001"+
51598 		";\u0003;\u05d2\b;\u0001;\u0001;\u0001;\u0005;\u05d7\b;\n;\f;\u05da\t;"+
51599 		"\u0001;\u0003;\u05dd\b;\u0001;\u0001;\u0001<\u0001<\u0001=\u0001=\u0001"+
51600 		">\u0001>\u0001>\u0003>\u05e8\b>\u0001?\u0001?\u0001?\u0001?\u0001?\u0001"+
51601 		"?\u0001?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0003@\u05f8"+
51602 		"\b@\u0001@\u0001@\u0001A\u0001A\u0001A\u0001A\u0001A\u0005A\u0601\bA\n"+
51603 		"A\fA\u0604\tA\u0001A\u0001A\u0003A\u0608\bA\u0001A\u0001A\u0001B\u0001"+
51604 		"B\u0001B\u0001B\u0001B\u0005B\u0611\bB\nB\fB\u0614\tB\u0001B\u0003B\u0617"+
51605 		"\bB\u0001B\u0001B\u0001C\u0001C\u0001C\u0003C\u061e\bC\u0001C\u0001C\u0001"+
51606 		"C\u0001C\u0001C\u0003C\u0625\bC\u0001D\u0001D\u0003D\u0629\bD\u0001D\u0004"+
51607 		"D\u062c\bD\u000bD\fD\u062d\u0001D\u0003D\u0631\bD\u0001D\u0001D\u0001"+
51608 		"E\u0001E\u0001E\u0001E\u0001E\u0001F\u0001F\u0001F\u0001G\u0001G\u0001"+
51609 		"G\u0001G\u0003G\u0641\bG\u0001H\u0001H\u0001H\u0001H\u0001H\u0005H\u0648"+
51610 		"\bH\nH\fH\u064b\tH\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001"+
51611 		"H\u0001H\u0003H\u0656\bH\u0003H\u0658\bH\u0001I\u0001I\u0001I\u0003I\u065d"+
51612 		"\bI\u0001I\u0001I\u0003I\u0661\bI\u0001I\u0003I\u0664\bI\u0001J\u0001"+
51613 		"J\u0001J\u0003J\u0669\bJ\u0001J\u0001J\u0001J\u0001J\u0001J\u0001J\u0001"+
51614 		"J\u0003J\u0672\bJ\u0001J\u0001J\u0001J\u0003J\u0677\bJ\u0001K\u0001K\u0001"+
51615 		"L\u0001L\u0001L\u0001L\u0003L\u067f\bL\u0001L\u0001L\u0001M\u0001M\u0001"+
51616 		"M\u0001M\u0001M\u0001M\u0001M\u0001M\u0003M\u068b\bM\u0001M\u0001M\u0001"+
51617 		"N\u0001N\u0001N\u0001N\u0001N\u0003N\u0694\bN\u0001N\u0001N\u0001N\u0001"+
51618 		"N\u0003N\u069a\bN\u0001O\u0001O\u0001O\u0001P\u0001P\u0001P\u0003P\u06a2"+
51619 		"\bP\u0001P\u0003P\u06a5\bP\u0001P\u0003P\u06a8\bP\u0001P\u0001P\u0001"+
51620 		"Q\u0001Q\u0001Q\u0001Q\u0001Q\u0005Q\u06b1\bQ\nQ\fQ\u06b4\tQ\u0001R\u0001"+
51621 		"R\u0001R\u0001S\u0001S\u0003S\u06bb\bS\u0001T\u0001T\u0001T\u0001T\u0001"+
51622 		"T\u0001U\u0001U\u0003U\u06c4\bU\u0001V\u0001V\u0001V\u0001V\u0001V\u0001"+
51623 		"V\u0003V\u06cc\bV\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0003W\u06d4"+
51624 		"\bW\u0001X\u0001X\u0003X\u06d8\bX\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+
51625 		"Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0003Y\u06e5\bY\u0003Y\u06e7\bY\u0001"+
51626 		"Z\u0001Z\u0001Z\u0001Z\u0001[\u0001[\u0001[\u0003[\u06f0\b[\u0001\\\u0001"+
51627 		"\\\u0001\\\u0001]\u0001]\u0001^\u0001^\u0001^\u0001_\u0001_\u0001_\u0001"+
51628 		"_\u0001_\u0001_\u0001`\u0001`\u0001`\u0005`\u0703\b`\n`\f`\u0706\t`\u0001"+
51629 		"a\u0001a\u0003a\u070a\ba\u0001b\u0001b\u0001b\u0001b\u0001c\u0001c\u0001"+
51630 		"c\u0001c\u0001c\u0001c\u0003c\u0716\bc\u0001c\u0001c\u0001c\u0001c\u0001"+
51631 		"c\u0001c\u0001d\u0001d\u0001d\u0001d\u0001d\u0003d\u0723\bd\u0001e\u0001"+
51632 		"e\u0001f\u0001f\u0001f\u0005f\u072a\bf\nf\ff\u072d\tf\u0001g\u0001g\u0001"+
51633 		"h\u0001h\u0001i\u0001i\u0001i\u0001i\u0001i\u0001i\u0003i\u0739\bi\u0001"+
51634 		"j\u0001j\u0001k\u0001k\u0001l\u0001l\u0001m\u0001m\u0001n\u0001n\u0001"+
51635 		"o\u0001o\u0001o\u0001p\u0001p\u0001q\u0001q\u0003q\u074c\bq\u0001q\u0001"+
51636 		"q\u0001r\u0001r\u0001r\u0001r\u0001r\u0003r\u0755\br\u0001s\u0001s\u0003"+
51637 		"s\u0759\bs\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001u\u0001u\u0001"+
51638 		"u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001"+
51639 		"v\u0001v\u0001w\u0001w\u0001w\u0003w\u0772\bw\u0001w\u0001w\u0001w\u0001"+
51640 		"w\u0001w\u0001x\u0001x\u0001x\u0003x\u077c\bx\u0001x\u0001x\u0001x\u0001"+
51641 		"x\u0001x\u0001y\u0001y\u0001y\u0003y\u0786\by\u0001y\u0001y\u0001y\u0001"+
51642 		"y\u0001z\u0001z\u0001z\u0003z\u078f\bz\u0001z\u0001z\u0001z\u0001z\u0001"+
51643 		"z\u0001z\u0001{\u0001{\u0001{\u0001{\u0005{\u079b\b{\n{\f{\u079e\t{\u0001"+
51644 		"|\u0001|\u0001|\u0001|\u0001|\u0003|\u07a5\b|\u0001|\u0001|\u0001|\u0001"+
51645 		"|\u0003|\u07ab\b|\u0001}\u0001}\u0001}\u0001}\u0005}\u07b1\b}\n}\f}\u07b4"+
51646 		"\t}\u0001~\u0001~\u0001~\u0001~\u0001~\u0001~\u0005~\u07bc\b~\n~\f~\u07bf"+
51647 		"\t~\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0003\u007f\u07c5"+
51648 		"\b\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001"+
51649 		"\u0080\u0001\u0080\u0001\u0080\u0003\u0080\u07cf\b\u0080\u0001\u0080\u0005"+
51650 		"\u0080\u07d2\b\u0080\n\u0080\f\u0080\u07d5\t\u0080\u0001\u0081\u0001\u0081"+
51651 		"\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082"+
51652 		"\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0083\u0001\u0083"+
51653 		"\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084"+
51654 		"\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085"+
51655 		"\u0001\u0085\u0001\u0085\u0005\u0085\u07f3\b\u0085\n\u0085\f\u0085\u07f6"+
51656 		"\t\u0085\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001"+
51657 		"\u0086\u0003\u0086\u07fe\b\u0086\u0001\u0086\u0003\u0086\u0801\b\u0086"+
51658 		"\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0003\u0087"+
51659 		"\u0808\b\u0087\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088"+
51660 		"\u0003\u0088\u080f\b\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089"+
51661 		"\u0001\u0089\u0003\u0089\u0816\b\u0089\u0001\u0089\u0001\u0089\u0001\u0089"+
51662 		"\u0001\u0089\u0001\u008a\u0001\u008a\u0001\u008a\u0003\u008a\u081f\b\u008a"+
51663 		"\u0001\u008a\u0001\u008a\u0001\u008a\u0005\u008a\u0824\b\u008a\n\u008a"+
51664 		"\f\u008a\u0827\t\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0003\u008b"+
51665 		"\u082c\b\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0005\u008b\u0831\b"+
51666 		"\u008b\n\u008b\f\u008b\u0834\t\u008b\u0001\u008c\u0001\u008c\u0001\u008c"+
51667 		"\u0003\u008c\u0839\b\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0005\u008c"+
51668 		"\u083e\b\u008c\n\u008c\f\u008c\u0841\t\u008c\u0001\u008d\u0001\u008d\u0001"+
51669 		"\u008d\u0003\u008d\u0846\b\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0005"+
51670 		"\u008d\u084b\b\u008d\n\u008d\f\u008d\u084e\t\u008d\u0001\u008e\u0001\u008e"+
51671 		"\u0001\u008e\u0003\u008e\u0853\b\u008e\u0001\u008e\u0001\u008e\u0001\u008e"+
51672 		"\u0005\u008e\u0858\b\u008e\n\u008e\f\u008e\u085b\t\u008e\u0001\u008e\u0001"+
51673 		"\u008e\u0001\u008e\u0001\u008e\u0003\u008e\u0861\b\u008e\u0003\u008e\u0863"+
51674 		"\b\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0003\u008f\u0868\b\u008f"+
51675 		"\u0001\u008f\u0001\u008f\u0001\u008f\u0005\u008f\u086d\b\u008f\n\u008f"+
51676 		"\f\u008f\u0870\t\u008f\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090"+
51677 		"\u0001\u0091\u0001\u0091\u0001\u0091\u0003\u0091\u0879\b\u0091\u0001\u0091"+
51678 		"\u0001\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0093"+
51679 		"\u0001\u0093\u0003\u0093\u0883\b\u0093\u0001\u0094\u0001\u0094\u0001\u0094"+
51680 		"\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0005\u0095"+
51681 		"\u088d\b\u0095\n\u0095\f\u0095\u0890\t\u0095\u0001\u0095\u0001\u0095\u0003"+
51682 		"\u0095\u0894\b\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0001\u0096\u0001"+
51683 		"\u0096\u0001\u0096\u0001\u0096\u0003\u0096\u089d\b\u0096\u0001\u0097\u0001"+
51684 		"\u0097\u0001\u0097\u0005\u0097\u08a2\b\u0097\n\u0097\f\u0097\u08a5\t\u0097"+
51685 		"\u0001\u0097\u0001\u0097\u0003\u0097\u08a9\b\u0097\u0001\u0098\u0001\u0098"+
51686 		"\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098"+
51687 		"\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0003\u0098"+
51688 		"\u08b8\b\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098"+
51689 		"\u0001\u0098\u0001\u0098\u0001\u0098\u0003\u0098\u08c2\b\u0098\u0001\u0098"+
51690 		"\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098"+
51691 		"\u0001\u0098\u0001\u0098\u0003\u0098\u08cd\b\u0098\u0001\u0098\u0003\u0098"+
51692 		"\u08d0\b\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098"+
51693 		"\u0001\u0098\u0001\u0098\u0001\u0098\u0005\u0098\u08da\b\u0098\n\u0098"+
51694 		"\f\u0098\u08dd\t\u0098\u0001\u0098\u0003\u0098\u08e0\b\u0098\u0001\u0099"+
51695 		"\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099"+
51696 		"\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u0099"+
51697 		"\u0001\u0099\u0001\u009a\u0001\u009a\u0003\u009a\u08f2\b\u009a\u0001\u009a"+
51698 		"\u0001\u009a\u0001\u009a\u0003\u009a\u08f7\b\u009a\u0001\u009b\u0001\u009b"+
51699 		"\u0003\u009b\u08fb\b\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0003\u009b"+
51700 		"\u0900\b\u009b\u0001\u009c\u0001\u009c\u0003\u009c\u0904\b\u009c\u0001"+
51701 		"\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0003\u009c\u090b"+
51702 		"\b\u009c\u0001\u009c\u0005\u009c\u090e\b\u009c\n\u009c\f\u009c\u0911\t"+
51703 		"\u009c\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0003"+
51704 		"\u009d\u0918\b\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0001"+
51705 		"\u009d\u0001\u009d\u0001\u009d\u0003\u009d\u0921\b\u009d\u0001\u009e\u0001"+
51706 		"\u009e\u0003\u009e\u0925\b\u009e\u0001\u009e\u0001\u009e\u0003\u009e\u0929"+
51707 		"\b\u009e\u0001\u009f\u0003\u009f\u092c\b\u009f\u0001\u009f\u0003\u009f"+
51708 		"\u092f\b\u009f\u0001\u009f\u0003\u009f\u0932\b\u009f\u0001\u00a0\u0001"+
51709 		"\u00a0\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001"+
51710 		"\u00a1\u0001\u00a1\u0001\u00a1\u0005\u00a1\u093e\b\u00a1\n\u00a1\f\u00a1"+
51711 		"\u0941\t\u00a1\u0001\u00a1\u0001\u00a1\u0003\u00a1\u0945\b\u00a1\u0001"+
51712 		"\u00a2\u0001\u00a2\u0001\u00a2\u0003\u00a2\u094a\b\u00a2\u0001\u00a3\u0001"+
51713 		"\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a4\u0001"+
51714 		"\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a6\u0001"+
51715 		"\u00a6\u0001\u00a6\u0001\u00a6\u0003\u00a6\u095c\b\u00a6\u0003\u00a6\u095e"+
51716 		"\b\u00a6\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0001"+
51717 		"\u00a7\u0001\u00a7\u0001\u00a8\u0001\u00a8\u0003\u00a8\u0969\b\u00a8\u0001"+
51718 		"\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0003"+
51719 		"\u00a8\u0971\b\u00a8\u0001\u00a8\u0005\u00a8\u0974\b\u00a8\n\u00a8\f\u00a8"+
51720 		"\u0977\t\u00a8\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9"+
51721 		"\u0001\u00a9\u0003\u00a9\u097f\b\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa"+
51722 		"\u0001\u00aa\u0001\u00aa\u0003\u00aa\u0986\b\u00aa\u0001\u00ab\u0001\u00ab"+
51723 		"\u0001\u00ab\u0001\u00ab\u0003\u00ab\u098c\b\u00ab\u0001\u00ab\u0001\u00ab"+
51724 		"\u0001\u00ab\u0001\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0003\u00ac"+
51725 		"\u0995\b\u00ac\u0001\u00ac\u0003\u00ac\u0998\b\u00ac\u0001\u00ac\u0003"+
51726 		"\u00ac\u099b\b\u00ac\u0001\u00ac\u0003\u00ac\u099e\b\u00ac\u0001\u00ad"+
51727 		"\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0005\u00ad\u09a5\b\u00ad"+
51728 		"\n\u00ad\f\u00ad\u09a8\t\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001"+
51729 		"\u00ae\u0001\u00ae\u0003\u00ae\u09af\b\u00ae\u0001\u00af\u0001\u00af\u0001"+
51730 		"\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0003\u00b0\u09b8"+
51731 		"\b\u00b0\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0005\u00b1\u09bd\b\u00b1"+
51732 		"\n\u00b1\f\u00b1\u09c0\t\u00b1\u0003\u00b1\u09c2\b\u00b1\u0001\u00b2\u0001"+
51733 		"\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0003\u00b2\u09ca"+
51734 		"\b\u00b2\u0003\u00b2\u09cc\b\u00b2\u0001\u00b2\u0003\u00b2\u09cf\b\u00b2"+
51735 		"\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+
51736 		"\u0001\u00b4\u0001\u00b4\u0003\u00b4\u09d9\b\u00b4\u0001\u00b4\u0001\u00b4"+
51737 		"\u0001\u00b4\u0003\u00b4\u09de\b\u00b4\u0001\u00b5\u0001\u00b5\u0001\u00b5"+
51738 		"\u0003\u00b5\u09e3\b\u00b5\u0001\u00b6\u0001\u00b6\u0003\u00b6\u09e7\b"+
51739 		"\u00b6\u0001\u00b7\u0003\u00b7\u09ea\b\u00b7\u0001\u00b7\u0001\u00b7\u0003"+
51740 		"\u00b7\u09ee\b\u00b7\u0001\u00b7\u0003\u00b7\u09f1\b\u00b7\u0001\u00b8"+
51741 		"\u0001\u00b8\u0001\u00b8\u0003\u00b8\u09f6\b\u00b8\u0001\u00b9\u0001\u00b9"+
51742 		"\u0001\u00b9\u0001\u00b9\u0001\u00ba\u0001\u00ba\u0003\u00ba\u09fe\b\u00ba"+
51743 		"\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0005\u00ba"+
51744 		"\u0a05\b\u00ba\n\u00ba\f\u00ba\u0a08\t\u00ba\u0001\u00bb\u0001\u00bb\u0001"+
51745 		"\u00bb\u0001\u00bb\u0001\u00bb\u0003\u00bb\u0a0f\b\u00bb\u0001\u00bb\u0003"+
51746 		"\u00bb\u0a12\b\u00bb\u0001\u00bb\u0003\u00bb\u0a15\b\u00bb\u0001\u00bc"+
51747 		"\u0003\u00bc\u0a18\b\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc"+
51748 		"\u0003\u00bc\u0a1e\b\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc\u0a22\b"+
51749 		"\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0005\u00bd\u0a28"+
51750 		"\b\u00bd\n\u00bd\f\u00bd\u0a2b\t\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00be"+
51751 		"\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+
51752 		"\u0001\u00be\u0001\u00be\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf"+
51753 		"\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0003\u00bf\u0a40\b\u00bf"+
51754 		"\u0003\u00bf\u0a42\b\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0"+
51755 		"\u0a47\b\u00c0\u0003\u00c0\u0a49\b\u00c0\u0001\u00c0\u0001\u00c0\u0001"+
51756 		"\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u0a50\b\u00c0\u0003\u00c0\u0a52"+
51757 		"\b\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u0a56\b\u00c0\u0001\u00c1"+
51758 		"\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0005\u00c1\u0a5c\b\u00c1\n\u00c1"+
51759 		"\f\u00c1\u0a5f\t\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c2\u0001\u00c2"+
51760 		"\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
51761 		"\u0001\u00c2\u0003\u00c2\u0a6c\b\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
51762 		"\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0003\u00c2\u0a75\b\u00c2"+
51763 		"\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
51764 		"\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
51765 		"\u0001\u00c2\u0003\u00c2\u0a84\b\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
51766 		"\u0001\u00c2\u0003\u00c2\u0a8a\b\u00c2\u0001\u00c2\u0001\u00c2\u0003\u00c2"+
51767 		"\u0a8e\b\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
51768 		"\u0003\u00c2\u0a95\b\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3"+
51769 		"\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3"+
51770 		"\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4"+
51771 		"\u0005\u00c4\u0aa7\b\u00c4\n\u00c4\f\u00c4\u0aaa\t\u00c4\u0001\u00c4\u0001"+
51772 		"\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0003\u00c5\u0ab2"+
51773 		"\b\u00c5\u0001\u00c5\u0003\u00c5\u0ab5\b\u00c5\u0001\u00c5\u0001\u00c5"+
51774 		"\u0001\u00c5\u0001\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6"+
51775 		"\u0001\u00c6\u0001\u00c6\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7"+
51776 		"\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7"+
51777 		"\u0003\u00c7\u0acb\b\u00c7\u0003\u00c7\u0acd\b\u00c7\u0001\u00c8\u0001"+
51778 		"\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001"+
51779 		"\u00c8\u0001\u00c8\u0003\u00c8\u0ad8\b\u00c8\u0001\u00c9\u0001\u00c9\u0001"+
51780 		"\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001"+
51781 		"\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0003"+
51782 		"\u00c9\u0ae8\b\u00c9\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0003\u00c9\u0aed"+
51783 		"\b\u00c9\u0005\u00c9\u0aef\b\u00c9\n\u00c9\f\u00c9\u0af2\t\u00c9\u0001"+
51784 		"\u00c9\u0001\u00c9\u0003\u00c9\u0af6\b\u00c9\u0001\u00ca\u0001\u00ca\u0001"+
51785 		"\u00ca\u0001\u00ca\u0001\u00ca\u0003\u00ca\u0afd\b\u00ca\u0001\u00ca\u0001"+
51786 		"\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0005\u00ca\u0b05"+
51787 		"\b\u00ca\n\u00ca\f\u00ca\u0b08\t\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca"+
51788 		"\u0001\u00cb\u0003\u00cb\u0b0e\b\u00cb\u0001\u00cb\u0003\u00cb\u0b11\b"+
51789 		"\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0001"+
51790 		"\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0003\u00cc\u0b1c\b\u00cc\u0001"+
51791 		"\u00cd\u0001\u00cd\u0003\u00cd\u0b20\b\u00cd\u0001\u00cd\u0001\u00cd\u0001"+
51792 		"\u00cd\u0003\u00cd\u0b25\b\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001"+
51793 		"\u00ce\u0003\u00ce\u0b2b\b\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0003"+
51794 		"\u00ce\u0b30\b\u00ce\u0001\u00ce\u0003\u00ce\u0b33\b\u00ce\u0001\u00cf"+
51795 		"\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0"+
51796 		"\u0005\u00d0\u0b3c\b\u00d0\n\u00d0\f\u00d0\u0b3f\t\u00d0\u0001\u00d1\u0001"+
51797 		"\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d1\u0003\u00d1\u0b47"+
51798 		"\b\u00d1\u0001\u00d2\u0001\u00d2\u0003\u00d2\u0b4b\b\u00d2\u0001\u00d2"+
51799 		"\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d3\u0001\u00d3"+
51800 		"\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3"+
51801 		"\u0003\u00d3\u0b5a\b\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4"+
51802 		"\u0001\u00d4\u0003\u00d4\u0b61\b\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4"+
51803 		"\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+
51804 		"\u0001\u00d5\u0003\u00d5\u0b6d\b\u00d5\u0001\u00d5\u0003\u00d5\u0b70\b"+
51805 		"\u00d5\u0001\u00d5\u0001\u00d5\u0003\u00d5\u0b74\b\u00d5\u0001\u00d5\u0001"+
51806 		"\u00d5\u0003\u00d5\u0b78\b\u00d5\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001"+
51807 		"\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6\u0b81\b\u00d6\u0001"+
51808 		"\u00d7\u0003\u00d7\u0b84\b\u00d7\u0001\u00d7\u0003\u00d7\u0b87\b\u00d7"+
51809 		"\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0005\u00d7\u0b8c\b\u00d7\n\u00d7"+
51810 		"\f\u00d7\u0b8f\t\u00d7\u0001\u00d8\u0001\u00d8\u0003\u00d8\u0b93\b\u00d8"+
51811 		"\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0005\u00d9"+
51812 		"\u0b9a\b\u00d9\n\u00d9\f\u00d9\u0b9d\t\u00d9\u0001\u00d9\u0001\u00d9\u0001"+
51813 		"\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001"+
51814 		"\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001"+
51815 		"\u00da\u0001\u00da\u0001\u00da\u0003\u00da\u0bb0\b\u00da\u0003\u00da\u0bb2"+
51816 		"\b\u00da\u0001\u00db\u0001\u00db\u0001\u00dc\u0001\u00dc\u0003\u00dc\u0bb8"+
51817 		"\b\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0005\u00dc\u0bbd\b\u00dc"+
51818 		"\n\u00dc\f\u00dc\u0bc0\t\u00dc\u0001\u00dd\u0001\u00dd\u0003\u00dd\u0bc4"+
51819 		"\b\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0005\u00dd\u0bc9\b\u00dd"+
51820 		"\n\u00dd\f\u00dd\u0bcc\t\u00dd\u0001\u00de\u0003\u00de\u0bcf\b\u00de\u0001"+
51821 		"\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0003\u00de\u0bd5\b\u00de\u0001"+
51822 		"\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0003\u00df\u0bdb\b\u00df\u0001"+
51823 		"\u00e0\u0001\u00e0\u0001\u00e0\u0003\u00e0\u0be0\b\u00e0\u0001\u00e0\u0001"+
51824 		"\u00e0\u0001\u00e0\u0001\u00e0\u0003\u00e0\u0be6\b\u00e0\u0001\u00e0\u0001"+
51825 		"\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0003\u00e0\u0bed\b\u00e0\u0001"+
51826 		"\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0003\u00e1\u0bf3\b\u00e1\u0001"+
51827 		"\u00e1\u0001\u00e1\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+
51828 		"\u00e2\u0003\u00e2\u0bfc\b\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001"+
51829 		"\u00e3\u0001\u00e3\u0003\u00e3\u0c03\b\u00e3\u0003\u00e3\u0c05\b\u00e3"+
51830 		"\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0003\u00e4\u0c0b\b\u00e4"+
51831 		"\u0001\u00e4\u0003\u00e4\u0c0e\b\u00e4\u0001\u00e4\u0003\u00e4\u0c11\b"+
51832 		"\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5\u0003\u00e5\u0c16\b\u00e5\u0001"+
51833 		"\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e6\u0003\u00e6\u0c1d"+
51834 		"\b\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001"+
51835 		"\u00e7\u0001\u00e7\u0003\u00e7\u0c26\b\u00e7\u0001\u00e8\u0001\u00e8\u0001"+
51836 		"\u00e8\u0003\u00e8\u0c2b\b\u00e8\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001"+
51837 		"\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0003\u00ea\u0c34\b\u00ea\u0003"+
51838 		"\u00ea\u0c36\b\u00ea\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0003\u00eb\u0c3b"+
51839 		"\b\u00eb\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001"+
51840 		"\u00ec\u0001\u00ec\u0003\u00ec\u0c44\b\u00ec\u0003\u00ec\u0c46\b\u00ec"+
51841 		"\u0001\u00ec\u0003\u00ec\u0c49\b\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed"+
51842 		"\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed"+
51843 		"\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed"+
51844 		"\u0001\u00ed\u0003\u00ed\u0c5b\b\u00ed\u0003\u00ed\u0c5d\b\u00ed\u0001"+
51845 		"\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001"+
51846 		"\u00ee\u0001\u00ee\u0003\u00ee\u0c67\b\u00ee\u0001\u00ee\u0001\u00ee\u0001"+
51847 		"\u00ef\u0001\u00ef\u0001\u00ef\u0003\u00ef\u0c6e\b\u00ef\u0001\u00ef\u0003"+
51848 		"\u00ef\u0c71\b\u00ef\u0001\u00ef\u0001\u00ef\u0003\u00ef\u0c75\b\u00ef"+
51849 		"\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0001\u00ef\u0005\u00ef\u0c7b\b\u00ef"+
51850 		"\n\u00ef\f\u00ef\u0c7e\t\u00ef\u0003\u00ef\u0c80\b\u00ef\u0001\u00f0\u0001"+
51851 		"\u00f0\u0003\u00f0\u0c84\b\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0005"+
51852 		"\u00f0\u0c89\b\u00f0\n\u00f0\f\u00f0\u0c8c\t\u00f0\u0001\u00f0\u0001\u00f0"+
51853 		"\u0005\u00f0\u0c90\b\u00f0\n\u00f0\f\u00f0\u0c93\t\u00f0\u0001\u00f0\u0001"+
51854 		"\u00f0\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0005\u00f1\u0c9b"+
51855 		"\b\u00f1\n\u00f1\f\u00f1\u0c9e\t\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1"+
51856 		"\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1"+
51857 		"\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1"+
51858 		"\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1"+
51859 		"\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0003\u00f1\u0cb9\b\u00f1"+
51860 		"\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2"+
51861 		"\u0003\u00f2\u0cc1\b\u00f2\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3"+
51862 		"\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3"+
51863 		"\u0001\u00f3\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4"+
51864 		"\u0003\u00f4\u0cd3\b\u00f4\u0003\u00f4\u0cd5\b\u00f4\u0001\u00f4\u0001"+
51865 		"\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0003\u00f4\u0cdc\b\u00f4\u0001"+
51866 		"\u00f4\u0003\u00f4\u0cdf\b\u00f4\u0003\u00f4\u0ce1\b\u00f4\u0001\u00f4"+
51867 		"\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0003\u00f4\u0ce8\b\u00f4"+
51868 		"\u0003\u00f4\u0cea\b\u00f4\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0003\u00f5"+
51869 		"\u0cef\b\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0005\u00f5\u0cf4\b"+
51870 		"\u00f5\n\u00f5\f\u00f5\u0cf7\t\u00f5\u0001\u00f6\u0001\u00f6\u0003\u00f6"+
51871 		"\u0cfb\b\u00f6\u0001\u00f6\u0003\u00f6\u0cfe\b\u00f6\u0001\u00f6\u0001"+
51872 		"\u00f6\u0003\u00f6\u0d02\b\u00f6\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001"+
51873 		"\u00f7\u0001\u00f7\u0005\u00f7\u0d09\b\u00f7\n\u00f7\f\u00f7\u0d0c\t\u00f7"+
51874 		"\u0003\u00f7\u0d0e\b\u00f7\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8"+
51875 		"\u0005\u00f8\u0d14\b\u00f8\n\u00f8\f\u00f8\u0d17\t\u00f8\u0001\u00f8\u0003"+
51876 		"\u00f8\u0d1a\b\u00f8\u0001\u00f9\u0001\u00f9\u0003\u00f9\u0d1e\b\u00f9"+
51877 		"\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0003\u00f9\u0d23\b\u00f9\u0001\u00f9"+
51878 		"\u0001\u00f9\u0001\u00f9\u0003\u00f9\u0d28\b\u00f9\u0001\u00fa\u0001\u00fa"+
51879 		"\u0003\u00fa\u0d2c\b\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fb\u0001\u00fb"+
51880 		"\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0005\u00fb\u0d35\b\u00fb\n\u00fb"+
51881 		"\f\u00fb\u0d38\t\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fc\u0001\u00fc"+
51882 		"\u0003\u00fc\u0d3e\b\u00fc\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd"+
51883 		"\u0003\u00fd\u0d44\b\u00fd\u0001\u00fd\u0001\u00fd\u0003\u00fd\u0d48\b"+
51884 		"\u00fd\u0001\u00fd\u0001\u00fd\u0003\u00fd\u0d4c\b\u00fd\u0001\u00fd\u0001"+
51885 		"\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0003\u00fd\u0d54"+
51886 		"\b\u00fd\u0003\u00fd\u0d56\b\u00fd\u0001\u00fd\u0003\u00fd\u0d59\b\u00fd"+
51887 		"\u0001\u00fd\u0001\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe"+
51888 		"\u0d60\b\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u0d65\b"+
51889 		"\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+
51890 		"\u00fe\u0001\u00fe\u0003\u00fe\u0d6e\b\u00fe\u0001\u00ff\u0001\u00ff\u0001"+
51891 		"\u00ff\u0003\u00ff\u0d73\b\u00ff\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0001"+
51892 		"\u00ff\u0005\u00ff\u0d79\b\u00ff\n\u00ff\f\u00ff\u0d7c\t\u00ff\u0001\u00ff"+
51893 		"\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0003\u00ff\u0d82\b\u00ff\u0001\u0100"+
51894 		"\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0101\u0001\u0101\u0003\u0101"+
51895 		"\u0d8a\b\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101"+
51896 		"\u0001\u0101\u0001\u0101\u0003\u0101\u0d93\b\u0101\u0001\u0101\u0001\u0101"+
51897 		"\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101"+
51898 		"\u0001\u0101\u0001\u0101\u0003\u0101\u0d9f\b\u0101\u0001\u0102\u0001\u0102"+
51899 		"\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102"+
51900 		"\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0005\u0102\u0dad\b\u0102"+
51901 		"\n\u0102\f\u0102\u0db0\t\u0102\u0003\u0102\u0db2\b\u0102\u0003\u0102\u0db4"+
51902 		"\b\u0102\u0001\u0103\u0003\u0103\u0db7\b\u0103\u0001\u0103\u0003\u0103"+
51903 		"\u0dba\b\u0103\u0001\u0103\u0003\u0103\u0dbd\b\u0103\u0001\u0103\u0003"+
51904 		"\u0103\u0dc0\b\u0103\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001"+
51905 		"\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001"+
51906 		"\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0003"+
51907 		"\u0104\u0dd2\b\u0104\u0001\u0105\u0001\u0105\u0001\u0105\u0003\u0105\u0dd7"+
51908 		"\b\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0003\u0105\u0ddc\b\u0105"+
51909 		"\u0001\u0105\u0001\u0105\u0001\u0105\u0003\u0105\u0de1\b\u0105\u0001\u0105"+
51910 		"\u0003\u0105\u0de4\b\u0105\u0005\u0105\u0de6\b\u0105\n\u0105\f\u0105\u0de9"+
51911 		"\t\u0105\u0001\u0105\u0001\u0105\u0001\u0106\u0001\u0106\u0001\u0106\u0003"+
51912 		"\u0106\u0df0\b\u0106\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001"+
51913 		"\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0005\u0107\u0dfa\b\u0107\n"+
51914 		"\u0107\f\u0107\u0dfd\t\u0107\u0003\u0107\u0dff\b\u0107\u0001\u0107\u0003"+
51915 		"\u0107\u0e02\b\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001"+
51916 		"\u0107\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001"+
51917 		"\u0108\u0005\u0108\u0e0f\b\u0108\n\u0108\f\u0108\u0e12\t\u0108\u0003\u0108"+
51918 		"\u0e14\b\u0108\u0001\u0108\u0003\u0108\u0e17\b\u0108\u0001\u0108\u0001"+
51919 		"\u0108\u0003\u0108\u0e1b\b\u0108\u0001\u0108\u0001\u0108\u0003\u0108\u0e1f"+
51920 		"\b\u0108\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001"+
51921 		"\u0109\u0005\u0109\u0e27\b\u0109\n\u0109\f\u0109\u0e2a\t\u0109\u0003\u0109"+
51922 		"\u0e2c\b\u0109\u0001\u0109\u0003\u0109\u0e2f\b\u0109\u0001\u0109\u0001"+
51923 		"\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u010a\u0001\u010a\u0001"+
51924 		"\u010a\u0001\u010a\u0003\u010a\u0e3a\b\u010a\u0001\u010a\u0005\u010a\u0e3d"+
51925 		"\b\u010a\n\u010a\f\u010a\u0e40\t\u010a\u0001\u010b\u0005\u010b\u0e43\b"+
51926 		"\u010b\n\u010b\f\u010b\u0e46\t\u010b\u0001\u010c\u0003\u010c\u0e49\b\u010c"+
51927 		"\u0001\u010c\u0003\u010c\u0e4c\b\u010c\u0001\u010c\u0001\u010c\u0001\u010c"+
51928 		"\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c"+
51929 		"\u0003\u010c\u0e57\b\u010c\u0001\u010c\u0003\u010c\u0e5a\b\u010c\u0001"+
51930 		"\u010c\u0001\u010c\u0001\u010c\u0003\u010c\u0e5f\b\u010c\u0003\u010c\u0e61"+
51931 		"\b\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001"+
51932 		"\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0003\u010d\u0e6d"+
51933 		"\b\u010d\u0001\u010d\u0003\u010d\u0e70\b\u010d\u0001\u010e\u0001\u010e"+
51934 		"\u0001\u010e\u0005\u010e\u0e75\b\u010e\n\u010e\f\u010e\u0e78\t\u010e\u0003"+
51935 		"\u010e\u0e7a\b\u010e\u0001\u010f\u0001\u010f\u0003\u010f\u0e7e\b\u010f"+
51936 		"\u0001\u010f\u0001\u010f\u0003\u010f\u0e82\b\u010f\u0001\u010f\u0003\u010f"+
51937 		"\u0e85\b\u010f\u0001\u0110\u0003\u0110\u0e88\b\u0110\u0001\u0110\u0001"+
51938 		"\u0110\u0003\u0110\u0e8c\b\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0001"+
51939 		"\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0005\u0111\u0e95\b\u0111\n"+
51940 		"\u0111\f\u0111\u0e98\t\u0111\u0003\u0111\u0e9a\b\u0111\u0001\u0112\u0001"+
51941 		"\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0003\u0112\u0ea1\b\u0112\u0001"+
51942 		"\u0113\u0003\u0113\u0ea4\b\u0113\u0001\u0113\u0001\u0113\u0003\u0113\u0ea8"+
51943 		"\b\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0003"+
51944 		"\u0113\u0eaf\b\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0003\u0113\u0eb4"+
51945 		"\b\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0001"+
51946 		"\u0113\u0001\u0113\u0005\u0113\u0ebd\b\u0113\n\u0113\f\u0113\u0ec0\t\u0113"+
51947 		"\u0001\u0113\u0001\u0113\u0003\u0113\u0ec4\b\u0113\u0003\u0113\u0ec6\b"+
51948 		"\u0113\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001"+
51949 		"\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0003"+
51950 		"\u0114\u0ed3\b\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001"+
51951 		"\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0003\u0114\u0ede"+
51952 		"\b\u0114\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0005\u0115\u0ee4"+
51953 		"\b\u0115\n\u0115\f\u0115\u0ee7\t\u0115\u0003\u0115\u0ee9\b\u0115\u0001"+
51954 		"\u0115\u0001\u0115\u0003\u0115\u0eed\b\u0115\u0001\u0115\u0001\u0115\u0001"+
51955 		"\u0115\u0001\u0115\u0003\u0115\u0ef3\b\u0115\u0001\u0116\u0001\u0116\u0001"+
51956 		"\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0005\u0117\u0efb\b\u0117\n"+
51957 		"\u0117\f\u0117\u0efe\t\u0117\u0001\u0118\u0001\u0118\u0001\u0118\u0001"+
51958 		"\u0118\u0001\u0118\u0005\u0118\u0f05\b\u0118\n\u0118\f\u0118\u0f08\t\u0118"+
51959 		"\u0001\u0118\u0001\u0118\u0003\u0118\u0f0c\b\u0118\u0001\u0118\u0001\u0118"+
51960 		"\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0119\u0001\u0119\u0001\u0119"+
51961 		"\u0001\u0119\u0001\u0119\u0003\u0119\u0f18\b\u0119\u0001\u0119\u0001\u0119"+
51962 		"\u0001\u0119\u0001\u0119\u0003\u0119\u0f1e\b\u0119\u0001\u0119\u0003\u0119"+
51963 		"\u0f21\b\u0119\u0001\u0119\u0003\u0119\u0f24\b\u0119\u0001\u0119\u0003"+
51964 		"\u0119\u0f27\b\u0119\u0001\u0119\u0003\u0119\u0f2a\b\u0119\u0001\u0119"+
51965 		"\u0003\u0119\u0f2d\b\u0119\u0001\u0119\u0003\u0119\u0f30\b\u0119\u0001"+
51966 		"\u0119\u0001\u0119\u0003\u0119\u0f34\b\u0119\u0001\u0119\u0001\u0119\u0001"+
51967 		"\u0119\u0003\u0119\u0f39\b\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001"+
51968 		"\u0119\u0001\u0119\u0003\u0119\u0f40\b\u0119\u0001\u011a\u0001\u011a\u0001"+
51969 		"\u011a\u0001\u011a\u0001\u011a\u0003\u011a\u0f47\b\u011a\u0001\u011b\u0001"+
51970 		"\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011c\u0001"+
51971 		"\u011c\u0001\u011c\u0001\u011c\u0001\u011c\u0003\u011c\u0f54\b\u011c\u0001"+
51972 		"\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001"+
51973 		"\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0003\u011d\u0f60\b\u011d\u0001"+
51974 		"\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0003\u011d\u0f66\b\u011d\u0001"+
51975 		"\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001"+
51976 		"\u011d\u0003\u011d\u0f6f\b\u011d\u0001\u011d\u0003\u011d\u0f72\b\u011d"+
51977 		"\u0001\u011e\u0001\u011e\u0003\u011e\u0f76\b\u011e\u0001\u011e\u0001\u011e"+
51978 		"\u0003\u011e\u0f7a\b\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e"+
51979 		"\u0001\u011e\u0005\u011e\u0f81\b\u011e\n\u011e\f\u011e\u0f84\t\u011e\u0001"+
51980 		"\u011e\u0001\u011e\u0003\u011e\u0f88\b\u011e\u0001\u011e\u0001\u011e\u0001"+
51981 		"\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0001\u011e\u0003\u011e\u0f91"+
51982 		"\b\u011e\u0003\u011e\u0f93\b\u011e\u0001\u011e\u0001\u011e\u0001\u011e"+
51983 		"\u0003\u011e\u0f98\b\u011e\u0003\u011e\u0f9a\b\u011e\u0001\u011f\u0001"+
51984 		"\u011f\u0001\u011f\u0005\u011f\u0f9f\b\u011f\n\u011f\f\u011f\u0fa2\t\u011f"+
51985 		"\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120"+
51986 		"\u0005\u0120\u0faa\b\u0120\n\u0120\f\u0120\u0fad\t\u0120\u0001\u0120\u0001"+
51987 		"\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0003\u0120\u0fb5"+
51988 		"\b\u0120\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0003"+
51989 		"\u0121\u0fbc\b\u0121\u0003\u0121\u0fbe\b\u0121\u0001\u0121\u0001\u0121"+
51990 		"\u0001\u0121\u0001\u0121\u0001\u0121\u0005\u0121\u0fc5\b\u0121\n\u0121"+
51991 		"\f\u0121\u0fc8\t\u0121\u0001\u0121\u0001\u0121\u0003\u0121\u0fcc\b\u0121"+
51992 		"\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0003\u0121"+
51993 		"\u0fd3\b\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+
51994 		"\u0003\u0121\u0fda\b\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+
51995 		"\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+
51996 		"\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0005\u0121\u0fea\b\u0121"+
51997 		"\n\u0121\f\u0121\u0fed\t\u0121\u0001\u0121\u0001\u0121\u0003\u0121\u0ff1"+
51998 		"\b\u0121\u0001\u0121\u0001\u0121\u0003\u0121\u0ff5\b\u0121\u0001\u0122"+
51999 		"\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122"+
52000 		"\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122"+
52001 		"\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122"+
52002 		"\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122"+
52003 		"\u0003\u0122\u1010\b\u0122\u0001\u0122\u0003\u0122\u1013\b\u0122\u0001"+
52004 		"\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+
52005 		"\u0122\u0003\u0122\u101c\b\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+
52006 		"\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+
52007 		"\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001"+
52008 		"\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0001\u0122\u0005"+
52009 		"\u0122\u1033\b\u0122\n\u0122\f\u0122\u1036\t\u0122\u0003\u0122\u1038\b"+
52010 		"\u0122\u0003\u0122\u103a\b\u0122\u0001\u0123\u0001\u0123\u0001\u0123\u0003"+
52011 		"\u0123\u103f\b\u0123\u0001\u0124\u0001\u0124\u0001\u0124\u0001\u0124\u0001"+
52012 		"\u0124\u0001\u0124\u0003\u0124\u1047\b\u0124\u0001\u0125\u0001\u0125\u0001"+
52013 		"\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001"+
52014 		"\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001"+
52015 		"\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0003\u0125\u105c"+
52016 		"\b\u0125\u0003\u0125\u105e\b\u0125\u0001\u0126\u0001\u0126\u0001\u0126"+
52017 		"\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0003\u0126\u1067\b\u0126"+
52018 		"\u0001\u0126\u0003\u0126\u106a\b\u0126\u0001\u0127\u0001\u0127\u0001\u0127"+
52019 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
52020 		"\u0001\u0127\u0001\u0127\u0005\u0127\u1077\b\u0127\n\u0127\f\u0127\u107a"+
52021 		"\t\u0127\u0001\u0127\u0001\u0127\u0003\u0127\u107e\b\u0127\u0001\u0127"+
52022 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0005\u0127\u1085\b\u0127"+
52023 		"\n\u0127\f\u0127\u1088\t\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001"+
52024 		"\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001"+
52025 		"\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0005"+
52026 		"\u0127\u1099\b\u0127\n\u0127\f\u0127\u109c\t\u0127\u0003\u0127\u109e\b"+
52027 		"\u0127\u0001\u0127\u0001\u0127\u0003\u0127\u10a2\b\u0127\u0001\u0128\u0001"+
52028 		"\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001"+
52029 		"\u0128\u0001\u0128\u0001\u0128\u0003\u0128\u10ae\b\u0128\u0003\u0128\u10b0"+
52030 		"\b\u0128\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001"+
52031 		"\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0003"+
52032 		"\u0129\u10bd\b\u0129\u0003\u0129\u10bf\b\u0129\u0001\u012a\u0001\u012a"+
52033 		"\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a\u0001\u012a"+
52034 		"\u0003\u012a\u10c9\b\u012a\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+
52035 		"\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+
52036 		"\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+
52037 		"\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+
52038 		"\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+
52039 		"\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+
52040 		"\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+
52041 		"\u0001\u012b\u0001\u012b\u0001\u012b\u0003\u012b\u10f6\b\u012b\u0001\u012c"+
52042 		"\u0001\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u10fc\b\u012c\u0001\u012d"+
52043 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
52044 		"\u0003\u012d\u1105\b\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
52045 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
52046 		"\u0001\u012d\u0001\u012d\u0001\u012d\u0003\u012d\u1114\b\u012d\u0001\u012e"+
52047 		"\u0001\u012e\u0003\u012e\u1118\b\u012e\u0001\u012f\u0001\u012f\u0001\u012f"+
52048 		"\u0001\u012f\u0001\u012f\u0005\u012f\u111f\b\u012f\n\u012f\f\u012f\u1122"+
52049 		"\t\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0003\u012f\u1127\b\u012f"+
52050 		"\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f"+
52051 		"\u0005\u012f\u112f\b\u012f\n\u012f\f\u012f\u1132\t\u012f\u0001\u012f\u0001"+
52052 		"\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0003\u012f\u113a"+
52053 		"\b\u012f\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
52054 		"\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0003\u0130\u1145\b\u0130\u0001"+
52055 		"\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001"+
52056 		"\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0003\u0131\u1151\b\u0131\u0003"+
52057 		"\u0131\u1153\b\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001"+
52058 		"\u0131\u0001\u0131\u0003\u0131\u115b\b\u0131\u0001\u0132\u0001\u0132\u0001"+
52059 		"\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0133\u0001"+
52060 		"\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0003\u0133\u1169\b\u0133\u0001"+
52061 		"\u0133\u0001\u0133\u0001\u0133\u0001\u0133\u0005\u0133\u116f\b\u0133\n"+
52062 		"\u0133\f\u0133\u1172\t\u0133\u0001\u0133\u0001\u0133\u0003\u0133\u1176"+
52063 		"\b\u0133\u0003\u0133\u1178\b\u0133\u0001\u0134\u0001\u0134\u0001\u0134"+
52064 		"\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0003\u0134\u1181\b\u0134"+
52065 		"\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0003\u0135\u1187\b\u0135"+
52066 		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
52067 		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
52068 		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
52069 		"\u0001\u0136\u0003\u0136\u119c\b\u0136\u0001\u0137\u0001\u0137\u0001\u0137"+
52070 		"\u0001\u0137\u0001\u0137\u0003\u0137\u11a3\b\u0137\u0001\u0137\u0001\u0137"+
52071 		"\u0001\u0137\u0001\u0137\u0005\u0137\u11a9\b\u0137\n\u0137\f\u0137\u11ac"+
52072 		"\t\u0137\u0001\u0137\u0001\u0137\u0003\u0137\u11b0\b\u0137\u0003\u0137"+
52073 		"\u11b2\b\u0137\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138"+
52074 		"\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138"+
52075 		"\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138"+
52076 		"\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138"+
52077 		"\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138"+
52078 		"\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138"+
52079 		"\u0001\u0138\u0001\u0138\u0005\u0138\u11d9\b\u0138\n\u0138\f\u0138\u11dc"+
52080 		"\t\u0138\u0001\u0138\u0001\u0138\u0003\u0138\u11e0\b\u0138\u0001\u0139"+
52081 		"\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139"+
52082 		"\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139"+
52083 		"\u0003\u0139\u11ef\b\u0139\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a"+
52084 		"\u0001\u013a\u0001\u013a\u0003\u013a\u11f7\b\u013a\u0001\u013b\u0001\u013b"+
52085 		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b"+
52086 		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b"+
52087 		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b"+
52088 		"\u0001\u013b\u0003\u013b\u120e\b\u013b\u0001\u013c\u0001\u013c\u0001\u013c"+
52089 		"\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0003\u013c\u1217\b\u013c"+
52090 		"\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+
52091 		"\u0003\u013d\u121f\b\u013d\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e"+
52092 		"\u0001\u013e\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0003\u013f"+
52093 		"\u122a\b\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0003\u013f\u122f\b"+
52094 		"\u013f\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0005\u0140\u1235"+
52095 		"\b\u0140\n\u0140\f\u0140\u1238\t\u0140\u0001\u0140\u0001\u0140\u0001\u0141"+
52096 		"\u0001\u0141\u0001\u0141\u0001\u0141\u0005\u0141\u1240\b\u0141\n\u0141"+
52097 		"\f\u0141\u1243\t\u0141\u0001\u0141\u0001\u0141\u0001\u0142\u0001\u0142"+
52098 		"\u0001\u0142\u0001\u0142\u0001\u0142\u0001\u0142\u0003\u0142\u124d\b\u0142"+
52099 		"\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+
52100 		"\u0001\u0143\u0003\u0143\u1256\b\u0143\u0001\u0144\u0001\u0144\u0001\u0144"+
52101 		"\u0001\u0144\u0001\u0144\u0003\u0144\u125d\b\u0144\u0001\u0145\u0001\u0145"+
52102 		"\u0003\u0145\u1261\b\u0145\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+
52103 		"\u0003\u0146\u1267\b\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+
52104 		"\u0001\u0146\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147"+
52105 		"\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147"+
52106 		"\u0001\u0147\u0001\u0147\u0001\u0147\u0003\u0147\u127c\b\u0147\u0001\u0147"+
52107 		"\u0001\u0147\u0001\u0147\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148"+
52108 		"\u0001\u0148\u0001\u0148\u0001\u0148\u0005\u0148\u1288\b\u0148\n\u0148"+
52109 		"\f\u0148\u128b\t\u0148\u0003\u0148\u128d\b\u0148\u0001\u0148\u0001\u0148"+
52110 		"\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0005\u0149"+
52111 		"\u1296\b\u0149\n\u0149\f\u0149\u1299\t\u0149\u0001\u0149\u0001\u0149\u0003"+
52112 		"\u0149\u129d\b\u0149\u0001\u014a\u0003\u014a\u12a0\b\u014a\u0001\u014a"+
52113 		"\u0001\u014a\u0003\u014a\u12a4\b\u014a\u0001\u014a\u0003\u014a\u12a7\b"+
52114 		"\u014a\u0001\u014a\u0001\u014a\u0003\u014a\u12ab\b\u014a\u0001\u014a\u0003"+
52115 		"\u014a\u12ae\b\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0003\u014a\u12b3"+
52116 		"\b\u014a\u0001\u014b\u0003\u014b\u12b6\b\u014b\u0001\u014b\u0003\u014b"+
52117 		"\u12b9\b\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0001\u014c\u0003\u014c"+
52118 		"\u12bf\b\u014c\u0001\u014c\u0003\u014c\u12c2\b\u014c\u0001\u014c\u0001"+
52119 		"\u014c\u0001\u014c\u0001\u014c\u0005\u014c\u12c8\b\u014c\n\u014c\f\u014c"+
52120 		"\u12cb\t\u014c\u0001\u014d\u0003\u014d\u12ce\b\u014d\u0001\u014d\u0003"+
52121 		"\u014d\u12d1\b\u014d\u0001\u014d\u0001\u014d\u0001\u014e\u0003\u014e\u12d6"+
52122 		"\b\u014e\u0001\u014e\u0001\u014e\u0003\u014e\u12da\b\u014e\u0001\u014e"+
52123 		"\u0001\u014e\u0001\u014e\u0003\u014e\u12df\b\u014e\u0001\u014e\u0001\u014e"+
52124 		"\u0003\u014e\u12e3\b\u014e\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+
52125 		"\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0005\u0150\u12ed\b\u0150"+
52126 		"\n\u0150\f\u0150\u12f0\t\u0150\u0001\u0150\u0003\u0150\u12f3\b\u0150\u0001"+
52127 		"\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0005\u0151\u12f9\b\u0151\n"+
52128 		"\u0151\f\u0151\u12fc\t\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001"+
52129 		"\u0151\u0003\u0151\u1302\b\u0151\u0001\u0152\u0001\u0152\u0003\u0152\u1306"+
52130 		"\b\u0152\u0001\u0153\u0003\u0153\u1309\b\u0153\u0001\u0153\u0001\u0153"+
52131 		"\u0003\u0153\u130d\b\u0153\u0001\u0153\u0001\u0153\u0003\u0153\u1311\b"+
52132 		"\u0153\u0001\u0153\u0003\u0153\u1314\b\u0153\u0001\u0153\u0003\u0153\u1317"+
52133 		"\b\u0153\u0001\u0153\u0001\u0153\u0003\u0153\u131b\b\u0153\u0001\u0154"+
52134 		"\u0003\u0154\u131e\b\u0154\u0001\u0154\u0003\u0154\u1321\b\u0154\u0001"+
52135 		"\u0154\u0001\u0154\u0003\u0154\u1325\b\u0154\u0001\u0154\u0003\u0154\u1328"+
52136 		"\b\u0154\u0001\u0154\u0003\u0154\u132b\b\u0154\u0001\u0155\u0001\u0155"+
52137 		"\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155"+
52138 		"\u0001\u0155\u0003\u0155\u1336\b\u0155\u0001\u0156\u0001\u0156\u0003\u0156"+
52139 		"\u133a\b\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0003\u0156\u133f\b"+
52140 		"\u0156\u0005\u0156\u1341\b\u0156\n\u0156\f\u0156\u1344\t\u0156\u0001\u0157"+
52141 		"\u0001\u0157\u0001\u0158\u0001\u0158\u0001\u0158\u0003\u0158\u134b\b\u0158"+
52142 		"\u0001\u0158\u0001\u0158\u0003\u0158\u134f\b\u0158\u0001\u0158\u0005\u0158"+
52143 		"\u1352\b\u0158\n\u0158\f\u0158\u1355\t\u0158\u0001\u0159\u0003\u0159\u1358"+
52144 		"\b\u0159\u0001\u0159\u0001\u0159\u0003\u0159\u135c\b\u0159\u0001\u0159"+
52145 		"\u0001\u0159\u0003\u0159\u1360\b\u0159\u0001\u0159\u0003\u0159\u1363\b"+
52146 		"\u0159\u0001\u0159\u0003\u0159\u1366\b\u0159\u0001\u0159\u0003\u0159\u1369"+
52147 		"\b\u0159\u0001\u0159\u0003\u0159\u136c\b\u0159\u0001\u0159\u0003\u0159"+
52148 		"\u136f\b\u0159\u0001\u015a\u0001\u015a\u0001\u015b\u0001\u015b\u0003\u015b"+
52149 		"\u1375\b\u015b\u0001\u015b\u0001\u015b\u0005\u015b\u1379\b\u015b\n\u015b"+
52150 		"\f\u015b\u137c\t\u015b\u0001\u015c\u0001\u015c\u0001\u015c\u0003\u015c"+
52151 		"\u1381\b\u015c\u0001\u015c\u0003\u015c\u1384\b\u015c\u0001\u015c\u0003"+
52152 		"\u015c\u1387\b\u015c\u0001\u015c\u0003\u015c\u138a\b\u015c\u0001\u015d"+
52153 		"\u0001\u015d\u0003\u015d\u138e\b\u015d\u0001\u015d\u0001\u015d\u0003\u015d"+
52154 		"\u1392\b\u015d\u0001\u015d\u0003\u015d\u1395\b\u015d\u0001\u015d\u0001"+
52155 		"\u015d\u0003\u015d\u1399\b\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001"+
52156 		"\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0003\u015d\u13a3"+
52157 		"\b\u015d\u0001\u015e\u0001\u015e\u0003\u015e\u13a7\b\u015e\u0001\u015f"+
52158 		"\u0001\u015f\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0161\u0001\u0161"+
52159 		"\u0001\u0161\u0001\u0162\u0001\u0162\u0001\u0162\u0005\u0162\u13b4\b\u0162"+
52160 		"\n\u0162\f\u0162\u13b7\t\u0162\u0001\u0163\u0001\u0163\u0005\u0163\u13bb"+
52161 		"\b\u0163\n\u0163\f\u0163\u13be\t\u0163\u0001\u0164\u0001\u0164\u0003\u0164"+
52162 		"\u13c2\b\u0164\u0001\u0164\u0003\u0164\u13c5\b\u0164\u0001\u0164\u0001"+
52163 		"\u0164\u0003\u0164\u13c9\b\u0164\u0001\u0164\u0001\u0164\u0003\u0164\u13cd"+
52164 		"\b\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0003\u0164\u13d3"+
52165 		"\b\u0164\u0001\u0165\u0003\u0165\u13d6\b\u0165\u0001\u0165\u0003\u0165"+
52166 		"\u13d9\b\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0003\u0165"+
52167 		"\u13df\b\u0165\u0001\u0165\u0003\u0165\u13e2\b\u0165\u0001\u0165\u0001"+
52168 		"\u0165\u0003\u0165\u13e6\b\u0165\u0001\u0165\u0001\u0165\u0001\u0165\u0003"+
52169 		"\u0165\u13eb\b\u0165\u0003\u0165\u13ed\b\u0165\u0001\u0166\u0001\u0166"+
52170 		"\u0001\u0166\u0001\u0166\u0003\u0166\u13f3\b\u0166\u0001\u0167\u0001\u0167"+
52171 		"\u0001\u0167\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168"+
52172 		"\u0005\u0168\u13fd\b\u0168\n\u0168\f\u0168\u1400\t\u0168\u0001\u0169\u0001"+
52173 		"\u0169\u0001\u0169\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001"+
52174 		"\u016b\u0001\u016b\u0001\u016b\u0001\u016c\u0001\u016c\u0001\u016c\u0005"+
52175 		"\u016c\u140f\b\u016c\n\u016c\f\u016c\u1412\t\u016c\u0001\u016d\u0001\u016d"+
52176 		"\u0003\u016d\u1416\b\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016e"+
52177 		"\u0001\u016e\u0001\u016e\u0003\u016e\u141e\b\u016e\u0001\u016e\u0001\u016e"+
52178 		"\u0001\u016e\u0003\u016e\u1423\b\u016e\u0003\u016e\u1425\b\u016e\u0001"+
52179 		"\u016f\u0001\u016f\u0001\u016f\u0005\u016f\u142a\b\u016f\n\u016f\f\u016f"+
52180 		"\u142d\t\u016f\u0001\u0170\u0001\u0170\u0001\u0170\u0001\u0170\u0003\u0170"+
52181 		"\u1433\b\u0170\u0001\u0170\u0003\u0170\u1436\b\u0170\u0001\u0171\u0001"+
52182 		"\u0171\u0001\u0171\u0001\u0172\u0001\u0172\u0001\u0172\u0003\u0172\u143e"+
52183 		"\b\u0172\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001"+
52184 		"\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001"+
52185 		"\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001"+
52186 		"\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001"+
52187 		"\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001"+
52188 		"\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001"+
52189 		"\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0005\u0173\u1468"+
52190 		"\b\u0173\n\u0173\f\u0173\u146b\t\u0173\u0001\u0173\u0001\u0173\u0001\u0173"+
52191 		"\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173"+
52192 		"\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0173"+
52193 		"\u0001\u0173\u0005\u0173\u147d\b\u0173\n\u0173\f\u0173\u1480\t\u0173\u0001"+
52194 		"\u0173\u0001\u0173\u0001\u0173\u0001\u0173\u0003\u0173\u1486\b\u0173\u0001"+
52195 		"\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+
52196 		"\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+
52197 		"\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+
52198 		"\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+
52199 		"\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+
52200 		"\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+
52201 		"\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+
52202 		"\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001"+
52203 		"\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0003"+
52204 		"\u0174\u14be\b\u0174\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0003"+
52205 		"\u0175\u14c4\b\u0175\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001"+
52206 		"\u0176\u0001\u0176\u0003\u0176\u14cc\b\u0176\u0001\u0176\u0003\u0176\u14cf"+
52207 		"\b\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001"+
52208 		"\u0176\u0001\u0176\u0001\u0176\u0003\u0176\u14d9\b\u0176\u0003\u0176\u14db"+
52209 		"\b\u0176\u0003\u0176\u14dd\b\u0176\u0001\u0176\u0001\u0176\u0001\u0176"+
52210 		"\u0003\u0176\u14e2\b\u0176\u0003\u0176\u14e4\b\u0176\u0003\u0176\u14e6"+
52211 		"\b\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0001\u0176\u0003\u0176\u14ec"+
52212 		"\b\u0176\u0003\u0176\u14ee\b\u0176\u0001\u0176\u0001\u0176\u0001\u0176"+
52213 		"\u0001\u0176\u0001\u0176\u0003\u0176\u14f5\b\u0176\u0001\u0176\u0001\u0176"+
52214 		"\u0001\u0176\u0001\u0176\u0003\u0176\u14fb\b\u0176\u0003\u0176\u14fd\b"+
52215 		"\u0176\u0003\u0176\u14ff\b\u0176\u0003\u0176\u1501\b\u0176\u0001\u0177"+
52216 		"\u0001\u0177\u0001\u0177\u0003\u0177\u1506\b\u0177\u0001\u0177\u0001\u0177"+
52217 		"\u0003\u0177\u150a\b\u0177\u0001\u0177\u0001\u0177\u0001\u0177\u0001\u0177"+
52218 		"\u0001\u0177\u0001\u0177\u0003\u0177\u1512\b\u0177\u0003\u0177\u1514\b"+
52219 		"\u0177\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001"+
52220 		"\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u151e\b\u0178\u0003\u0178\u1520"+
52221 		"\b\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u1524\b\u0178\u0001\u0178"+
52222 		"\u0001\u0178\u0003\u0178\u1528\b\u0178\u0003\u0178\u152a\b\u0178\u0001"+
52223 		"\u0179\u0001\u0179\u0001\u0179\u0003\u0179\u152f\b\u0179\u0003\u0179\u1531"+
52224 		"\b\u0179\u0001\u0179\u0003\u0179\u1534\b\u0179\u0001\u017a\u0001\u017a"+
52225 		"\u0001\u017a\u0001\u017a\u0001\u017a\u0005\u017a\u153b\b\u017a\n\u017a"+
52226 		"\f\u017a\u153e\t\u017a\u0001\u017a\u0001\u017a\u0001\u017b\u0001\u017b"+
52227 		"\u0001\u017b\u0001\u017b\u0001\u017b\u0003\u017b\u1547\b\u017b\u0001\u017c"+
52228 		"\u0001\u017c\u0001\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e"+
52229 		"\u0001\u017f\u0001\u017f\u0001\u017f\u0003\u017f\u1553\b\u017f\u0001\u0180"+
52230 		"\u0001\u0180\u0001\u0180\u0003\u0180\u1558\b\u0180\u0001\u0180\u0001\u0180"+
52231 		"\u0001\u0180\u0001\u0180\u0005\u0180\u155e\b\u0180\n\u0180\f\u0180\u1561"+
52232 		"\t\u0180\u0001\u0180\u0001\u0180\u0001\u0180\u0003\u0180\u1566\b\u0180"+
52233 		"\u0001\u0180\u0001\u0180\u0003\u0180\u156a\b\u0180\u0001\u0181\u0001\u0181"+
52234 		"\u0001\u0181\u0003\u0181\u156f\b\u0181\u0001\u0181\u0001\u0181\u0001\u0181"+
52235 		"\u0001\u0181\u0005\u0181\u1575\b\u0181\n\u0181\f\u0181\u1578\t\u0181\u0001"+
52236 		"\u0181\u0001\u0181\u0001\u0181\u0003\u0181\u157d\b\u0181\u0001\u0182\u0001"+
52237 		"\u0182\u0003\u0182\u1581\b\u0182\u0001\u0182\u0001\u0182\u0001\u0182\u0003"+
52238 		"\u0182\u1586\b\u0182\u0005\u0182\u1588\b\u0182\n\u0182\f\u0182\u158b\t"+
52239 		"\u0182\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183\u0003\u0183\u1591"+
52240 		"\b\u0183\u0001\u0183\u0001\u0183\u0001\u0184\u0001\u0184\u0001\u0184\u0005"+
52241 		"\u0184\u1598\b\u0184\n\u0184\f\u0184\u159b\t\u0184\u0001\u0185\u0001\u0185"+
52242 		"\u0001\u0185\u0001\u0185\u0003\u0185\u15a1\b\u0185\u0001\u0185\u0001\u0185"+
52243 		"\u0001\u0186\u0001\u0186\u0001\u0186\u0003\u0186\u15a8\b\u0186\u0001\u0186"+
52244 		"\u0001\u0186\u0001\u0187\u0001\u0187\u0001\u0188\u0001\u0188\u0003\u0188"+
52245 		"\u15b0\b\u0188\u0001\u0188\u0001\u0188\u0003\u0188\u15b4\b\u0188\u0001"+
52246 		"\u0189\u0001\u0189\u0001\u0189\u0003\u0189\u15b9\b\u0189\u0001\u0189\u0001"+
52247 		"\u0189\u0001\u0189\u0001\u0189\u0005\u0189\u15bf\b\u0189\n\u0189\f\u0189"+
52248 		"\u15c2\t\u0189\u0001\u0189\u0003\u0189\u15c5\b\u0189\u0001\u0189\u0001"+
52249 		"\u0189\u0003\u0189\u15c9\b\u0189\u0001\u018a\u0001\u018a\u0001\u018a\u0003"+
52250 		"\u018a\u15ce\b\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0001\u018a\u0005"+
52251 		"\u018a\u15d4\b\u018a\n\u018a\f\u018a\u15d7\t\u018a\u0001\u018a\u0003\u018a"+
52252 		"\u15da\b\u018a\u0001\u018b\u0001\u018b\u0001\u018b\u0003\u018b\u15df\b"+
52253 		"\u018b\u0001\u018c\u0001\u018c\u0001\u018c\u0003\u018c\u15e4\b\u018c\u0001"+
52254 		"\u018c\u0001\u018c\u0001\u018c\u0001\u018c\u0005\u018c\u15ea\b\u018c\n"+
52255 		"\u018c\f\u018c\u15ed\t\u018c\u0001\u018c\u0003\u018c\u15f0\b\u018c\u0001"+
52256 		"\u018c\u0001\u018c\u0003\u018c\u15f4\b\u018c\u0001\u018d\u0001\u018d\u0001"+
52257 		"\u018d\u0003\u018d\u15f9\b\u018d\u0001\u018d\u0001\u018d\u0001\u018d\u0001"+
52258 		"\u018d\u0005\u018d\u15ff\b\u018d\n\u018d\f\u018d\u1602\t\u018d\u0001\u018d"+
52259 		"\u0003\u018d\u1605\b\u018d\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+
52260 		"\u0001\u018f\u0001\u018f\u0003\u018f\u160d\b\u018f\u0001\u018f\u0001\u018f"+
52261 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+
52262 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+
52263 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0003\u018f"+
52264 		"\u1622\b\u018f\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190"+
52265 		"\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190"+
52266 		"\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0001\u0190\u0003\u0190"+
52267 		"\u1634\b\u0190\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52268 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0003\u0191\u163f\b\u0191"+
52269 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52270 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52271 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52272 		"\u0001\u0191\u0003\u0191\u1654\b\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52273 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52274 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52275 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52276 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0003\u0191\u166e\b\u0191\u0001\u0191"+
52277 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52278 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52279 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
52280 		"\u0003\u0191\u1683\b\u0191\u0001\u0192\u0001\u0192\u0003\u0192\u1687\b"+
52281 		"\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0003\u0192\u168c\b\u0192\u0001"+
52282 		"\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001"+
52283 		"\u0192\u0003\u0192\u1695\b\u0192\u0003\u0192\u1697\b\u0192\u0001\u0193"+
52284 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52285 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52286 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0003\u0193\u16a9\b\u0193\u0001\u0193"+
52287 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52288 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52289 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0003\u0193"+
52290 		"\u16bd\b\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52291 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0003\u0193\u16c8\b\u0193"+
52292 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52293 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52294 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0003\u0193"+
52295 		"\u16db\b\u0193\u0001\u0193\u0001\u0193\u0003\u0193\u16df\b\u0193\u0001"+
52296 		"\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0003"+
52297 		"\u0193\u16e7\b\u0193\u0001\u0193\u0001\u0193\u0003\u0193\u16eb\b\u0193"+
52298 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52299 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0003\u0193\u16f6\b\u0193\u0001\u0193"+
52300 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52301 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52302 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52303 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52304 		"\u0001\u0193\u0003\u0193\u1712\b\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52305 		"\u0001\u0193\u0003\u0193\u1718\b\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52306 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52307 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52308 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52309 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52310 		"\u0003\u0193\u1735\b\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
52311 		"\u0001\u0193\u0003\u0193\u173c\b\u0193\u0001\u0193\u0001\u0193\u0003\u0193"+
52312 		"\u1740\b\u0193\u0001\u0194\u0001\u0194\u0001\u0194\u0003\u0194\u1745\b"+
52313 		"\u0194\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001\u0195\u0001"+
52314 		"\u0195\u0001\u0195\u0001\u0195\u0003\u0195\u174f\b\u0195\u0001\u0196\u0001"+
52315 		"\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196\u0001"+
52316 		"\u0196\u0001\u0196\u0003\u0196\u175a\b\u0196\u0001\u0197\u0001\u0197\u0001"+
52317 		"\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0003"+
52318 		"\u0197\u1764\b\u0197\u0001\u0198\u0001\u0198\u0001\u0198\u0001\u0198\u0001"+
52319 		"\u0198\u0001\u0198\u0001\u0198\u0003\u0198\u176d\b\u0198\u0001\u0199\u0001"+
52320 		"\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001"+
52321 		"\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001"+
52322 		"\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u0199\u0001"+
52323 		"\u0199\u0003\u0199\u1783\b\u0199\u0001\u019a\u0001\u019a\u0001\u019a\u0001"+
52324 		"\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001"+
52325 		"\u019a\u0001\u019a\u0003\u019a\u1790\b\u019a\u0001\u019b\u0001\u019b\u0001"+
52326 		"\u019b\u0001\u019b\u0001\u019b\u0003\u019b\u1797\b\u019b\u0001\u019c\u0001"+
52327 		"\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001"+
52328 		"\u019c\u0001\u019c\u0001\u019c\u0003\u019c\u17a3\b\u019c\u0001\u019d\u0001"+
52329 		"\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0001"+
52330 		"\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0003\u019d\u17b0\b\u019d\u0001"+
52331 		"\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001"+
52332 		"\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0001\u019e\u0003\u019e\u17bd"+
52333 		"\b\u019e\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0001"+
52334 		"\u019f\u0001\u019f\u0001\u019f\u0001\u019f\u0003\u019f\u17c8\b\u019f\u0001"+
52335 		"\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001"+
52336 		"\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0003\u01a0\u17d4\b\u01a0\u0001"+
52337 		"\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0003\u01a1\u17da\b\u01a1\u0001"+
52338 		"\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0003\u01a1\u17e0\b\u01a1\u0001"+
52339 		"\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a1\u0003\u01a1\u17e6\b\u01a1\u0001"+
52340 		"\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001"+
52341 		"\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0003\u01a2\u17f2\b\u01a2\u0001"+
52342 		"\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001"+
52343 		"\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0003\u01a3\u17ff"+
52344 		"\b\u01a3\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001"+
52345 		"\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0003"+
52346 		"\u01a4\u180c\b\u01a4\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001"+
52347 		"\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0003"+
52348 		"\u01a5\u1818\b\u01a5\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0003"+
52349 		"\u01a6\u181e\b\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0003"+
52350 		"\u01a6\u1824\b\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001"+
52351 		"\u01a6\u0003\u01a6\u182b\b\u01a6\u0001\u01a7\u0001\u01a7\u0003\u01a7\u182f"+
52352 		"\b\u01a7\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001"+
52353 		"\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0003"+
52354 		"\u01a8\u183c\b\u01a8\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+
52355 		"\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001"+
52356 		"\u01a9\u0003\u01a9\u1849\b\u01a9\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001"+
52357 		"\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0003\u01aa\u1852\b\u01aa\u0001"+
52358 		"\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+
52359 		"\u01ab\u0001\u01ab\u0003\u01ab\u185c\b\u01ab\u0001\u01ac\u0001\u01ac\u0001"+
52360 		"\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ae\u0001\u01ae\u0001"+
52361 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
52362 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
52363 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
52364 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
52365 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
52366 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
52367 		"\u01ae\u0001\u01ae\u0003\u01ae\u188c\b\u01ae\u0001\u01af\u0001\u01af\u0001"+
52368 		"\u01b0\u0001\u01b0\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0003"+
52369 		"\u01b1\u1896\b\u01b1\u0003\u01b1\u1898\b\u01b1\u0001\u01b2\u0001\u01b2"+
52370 		"\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2"+
52371 		"\u0001\u01b2\u0001\u01b2\u0003\u01b2\u18a4\b\u01b2\u0001\u01b3\u0001\u01b3"+
52372 		"\u0001\u01b3\u0001\u01b3\u0003\u01b3\u18aa\b\u01b3\u0001\u01b3\u0001\u01b3"+
52373 		"\u0001\u01b3\u0001\u01b3\u0005\u01b3\u18b0\b\u01b3\n\u01b3\f\u01b3\u18b3"+
52374 		"\t\u01b3\u0003\u01b3\u18b5\b\u01b3\u0001\u01b4\u0001\u01b4\u0001\u01b4"+
52375 		"\u0001\u01b4\u0001\u01b4\u0005\u01b4\u18bc\b\u01b4\n\u01b4\f\u01b4\u18bf"+
52376 		"\t\u01b4\u0003\u01b4\u18c1\b\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4"+
52377 		"\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4"+
52378 		"\u0005\u01b4\u18cc\b\u01b4\n\u01b4\f\u01b4\u18cf\t\u01b4\u0003\u01b4\u18d1"+
52379 		"\b\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0003"+
52380 		"\u01b4\u18d8\b\u01b4\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0003"+
52381 		"\u01b5\u18de\b\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+
52382 		"\u01b5\u0003\u01b5\u18e5\b\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+
52383 		"\u01b5\u0005\u01b5\u18eb\b\u01b5\n\u01b5\f\u01b5\u18ee\t\u01b5\u0003\u01b5"+
52384 		"\u18f0\b\u01b5\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6"+
52385 		"\u0001\u01b6\u0001\u01b6\u0005\u01b6\u18f9\b\u01b6\n\u01b6\f\u01b6\u18fc"+
52386 		"\t\u01b6\u0003\u01b6\u18fe\b\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6"+
52387 		"\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0003\u01b6\u1907\b\u01b6"+
52388 		"\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+
52389 		"\u0001\u01b7\u0003\u01b7\u1910\b\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7"+
52390 		"\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0003\u01b7\u1918\b\u01b7\u0003\u01b7"+
52391 		"\u191a\b\u01b7\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8"+
52392 		"\u0001\u01b8\u0001\u01b8\u0003\u01b8\u1923\b\u01b8\u0001\u01b8\u0001\u01b8"+
52393 		"\u0001\u01b8\u0003\u01b8\u1928\b\u01b8\u0003\u01b8\u192a\b\u01b8\u0001"+
52394 		"\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0003\u01b9\u1930\b\u01b9\u0001"+
52395 		"\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001"+
52396 		"\u01b9\u0005\u01b9\u1939\b\u01b9\n\u01b9\f\u01b9\u193c\t\u01b9\u0003\u01b9"+
52397 		"\u193e\b\u01b9\u0003\u01b9\u1940\b\u01b9\u0001\u01ba\u0001\u01ba\u0001"+
52398 		"\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0003\u01ba\u1948\b\u01ba\u0001"+
52399 		"\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0003\u01ba\u194e\b\u01ba\u0001"+
52400 		"\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001"+
52401 		"\u01bb\u0001\u01bb\u0003\u01bb\u1958\b\u01bb\u0001\u01bc\u0001\u01bc\u0001"+
52402 		"\u01bd\u0001\u01bd\u0001\u01be\u0001\u01be\u0001\u01bf\u0001\u01bf\u0001"+
52403 		"\u01bf\u0003\u01bf\u1963\b\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0003"+
52404 		"\u01c0\u1968\b\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c1\u0001\u01c1\u0001"+
52405 		"\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0005\u01c1\u1973"+
52406 		"\b\u01c1\n\u01c1\f\u01c1\u1976\t\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1"+
52407 		"\u0003\u01c1\u197b\b\u01c1\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2"+
52408 		"\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0003\u01c2\u1984\b\u01c2\u0001\u01c2"+
52409 		"\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c2"+
52410 		"\u0001\u01c2\u0001\u01c2\u0003\u01c2\u198f\b\u01c2\u0001\u01c2\u0001\u01c2"+
52411 		"\u0001\u01c2\u0001\u01c2\u0003\u01c2\u1995\b\u01c2\u0001\u01c2\u0001\u01c2"+
52412 		"\u0001\u01c2\u0003\u01c2\u199a\b\u01c2\u0003\u01c2\u199c\b\u01c2\u0001"+
52413 		"\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0003\u01c3\u19a3"+
52414 		"\b\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0003\u01c4\u19a8\b\u01c4"+
52415 		"\u0001\u01c4\u0001\u01c4\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5"+
52416 		"\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5"+
52417 		"\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0003\u01c5\u19b9\b\u01c5\u0001\u01c6"+
52418 		"\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6"+
52419 		"\u0001\u01c6\u0003\u01c6\u19c3\b\u01c6\u0001\u01c7\u0001\u01c7\u0001\u01c7"+
52420 		"\u0001\u01c7\u0003\u01c7\u19c9\b\u01c7\u0001\u01c8\u0001\u01c8\u0001\u01c8"+
52421 		"\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0003\u01c8\u19d1\b\u01c8\u0001\u01c8"+
52422 		"\u0003\u01c8\u19d4\b\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8"+
52423 		"\u0005\u01c8\u19da\b\u01c8\n\u01c8\f\u01c8\u19dd\t\u01c8\u0003\u01c8\u19df"+
52424 		"\b\u01c8\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001"+
52425 		"\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001"+
52426 		"\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001"+
52427 		"\u01c9\u0003\u01c9\u19f3\b\u01c9\u0001\u01ca\u0001\u01ca\u0001\u01cb\u0001"+
52428 		"\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0005"+
52429 		"\u01cc\u19fe\b\u01cc\n\u01cc\f\u01cc\u1a01\t\u01cc\u0003\u01cc\u1a03\b"+
52430 		"\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0003"+
52431 		"\u01cc\u1a0a\b\u01cc\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001"+
52432 		"\u01cd\u0001\u01cd\u0003\u01cd\u1a12\b\u01cd\u0001\u01ce\u0001\u01ce\u0001"+
52433 		"\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0005\u01ce\u1a1b"+
52434 		"\b\u01ce\n\u01ce\f\u01ce\u1a1e\t\u01ce\u0003\u01ce\u1a20\b\u01ce\u0001"+
52435 		"\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001"+
52436 		"\u01cf\u0003\u01cf\u1a29\b\u01cf\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0003"+
52437 		"\u01d0\u1a2e\b\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0005"+
52438 		"\u01d0\u1a34\b\u01d0\n\u01d0\f\u01d0\u1a37\t\u01d0\u0001\u01d1\u0001\u01d1"+
52439 		"\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1"+
52440 		"\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0003\u01d1\u1a45\b\u01d1"+
52441 		"\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001\u01d3\u0001\u01d3"+
52442 		"\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0003\u01d3\u1a51\b\u01d3"+
52443 		"\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0003\u01d4\u1a57\b\u01d4"+
52444 		"\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0003\u01d5\u1a5d\b\u01d5"+
52445 		"\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0005\u01d5\u1a63\b\u01d5"+
52446 		"\n\u01d5\f\u01d5\u1a66\t\u01d5\u0003\u01d5\u1a68\b\u01d5\u0001\u01d6\u0001"+
52447 		"\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0003\u01d6\u1a70"+
52448 		"\b\u01d6\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d8\u0001"+
52449 		"\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001"+
52450 		"\u01d8\u0005\u01d8\u1a7e\b\u01d8\n\u01d8\f\u01d8\u1a81\t\u01d8\u0001\u01d8"+
52451 		"\u0003\u01d8\u1a84\b\u01d8\u0001\u01d9\u0001\u01d9\u0001\u01da\u0001\u01da"+
52452 		"\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0003\u01da\u1a8e\b\u01da"+
52453 		"\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0003\u01da"+
52454 		"\u1a95\b\u01da\u0003\u01da\u1a97\b\u01da\u0001\u01da\u0001\u01da\u0001"+
52455 		"\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001"+
52456 		"\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001"+
52457 		"\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0003"+
52458 		"\u01da\u1aad\b\u01da\u0001\u01db\u0001\u01db\u0001\u01dc\u0001\u01dc\u0001"+
52459 		"\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0003\u01dc\u1ab7\b\u01dc\u0001"+
52460 		"\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0003\u01dd\u1abe"+
52461 		"\b\u01dd\u0001\u01dd\u0000\u0004bjpr\u01de\u0000\u0002\u0004\u0006\b\n"+
52462 		"\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.0246"+
52463 		"8:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a"+
52464 		"\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2"+
52465 		"\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba"+
52466 		"\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2"+
52467 		"\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea"+
52468 		"\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102"+
52469 		"\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a"+
52470 		"\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132"+
52471 		"\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a"+
52472 		"\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162"+
52473 		"\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a"+
52474 		"\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192"+
52475 		"\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa"+
52476 		"\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2"+
52477 		"\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da"+
52478 		"\u01dc\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f0\u01f2"+
52479 		"\u01f4\u01f6\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a"+
52480 		"\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222"+
52481 		"\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u0234\u0236\u0238\u023a"+
52482 		"\u023c\u023e\u0240\u0242\u0244\u0246\u0248\u024a\u024c\u024e\u0250\u0252"+
52483 		"\u0254\u0256\u0258\u025a\u025c\u025e\u0260\u0262\u0264\u0266\u0268\u026a"+
52484 		"\u026c\u026e\u0270\u0272\u0274\u0276\u0278\u027a\u027c\u027e\u0280\u0282"+
52485 		"\u0284\u0286\u0288\u028a\u028c\u028e\u0290\u0292\u0294\u0296\u0298\u029a"+
52486 		"\u029c\u029e\u02a0\u02a2\u02a4\u02a6\u02a8\u02aa\u02ac\u02ae\u02b0\u02b2"+
52487 		"\u02b4\u02b6\u02b8\u02ba\u02bc\u02be\u02c0\u02c2\u02c4\u02c6\u02c8\u02ca"+
52488 		"\u02cc\u02ce\u02d0\u02d2\u02d4\u02d6\u02d8\u02da\u02dc\u02de\u02e0\u02e2"+
52489 		"\u02e4\u02e6\u02e8\u02ea\u02ec\u02ee\u02f0\u02f2\u02f4\u02f6\u02f8\u02fa"+
52490 		"\u02fc\u02fe\u0300\u0302\u0304\u0306\u0308\u030a\u030c\u030e\u0310\u0312"+
52491 		"\u0314\u0316\u0318\u031a\u031c\u031e\u0320\u0322\u0324\u0326\u0328\u032a"+
52492 		"\u032c\u032e\u0330\u0332\u0334\u0336\u0338\u033a\u033c\u033e\u0340\u0342"+
52493 		"\u0344\u0346\u0348\u034a\u034c\u034e\u0350\u0352\u0354\u0356\u0358\u035a"+
52494 		"\u035c\u035e\u0360\u0362\u0364\u0366\u0368\u036a\u036c\u036e\u0370\u0372"+
52495 		"\u0374\u0376\u0378\u037a\u037c\u037e\u0380\u0382\u0384\u0386\u0388\u038a"+
52496 		"\u038c\u038e\u0390\u0392\u0394\u0396\u0398\u039a\u039c\u039e\u03a0\u03a2"+
52497 		"\u03a4\u03a6\u03a8\u03aa\u03ac\u03ae\u03b0\u03b2\u03b4\u03b6\u03b8\u03ba"+
52498 		"\u0000^\u0002\u0000``\u0115\u0115\u0002\u0000\u00ec\u00ec\u0128\u0128"+
52499 		"\u0002\u0000\u02ae\u02ae\u02b5\u02b5\u0001\u0000\u000f\u0010\u0001\u0000"+
52500 		"\u0085\u0087\u0001\u0000kl1\u000056EFQQttyz~\u007f\u0083\u0083\u0085\u0085"+
52501 		"\u0088\u0089\u008b\u008b\u008d\u008e\u0092\u0097\u009a\u009b\u009d\u009d"+
52502 		"\u009f\u00a0\u00a2\u00a4\u00a7\u00a8\u00ab\u00ab\u00ae\u00ae\u00c9\u00ca"+
52503 		"\u00cf\u00cf\u00d3\u00d3\u00d6\u00d6\u00d8\u00de\u00e0\u00e1\u00ea\u00eb"+
52504 		"\u00ee\u00f2\u00f4\u00f5\u00f7\u0101\u0103\u0108\u010a\u0112\u0114\u0129"+
52505 		"\u0131\u01a3\u01a5\u01a5\u01ab\u01ab\u01b7\u01b9\u01de\u01de\u01e0\u01e6"+
52506 		"\u01e8\u01ed\u01f0\u01f0\u01f2\u01f7\u01fc\u01fc\u0201\u0202\u0204\u0206"+
52507 		"\u0208\u020a\u020c\u0215\u0220\u0281\u028f\u028f\u0293\u0293\u0002\u0000"+
52508 		"\u02ac\u02ac\u02ae\u02ae\u0002\u0000\u0004\u0004ff\u0002\u0000\u0005\u0005"+
52509 		"gg\u0002\u0000\u0006\u0006ii\u0002\u0000jl\u00df\u00df\u0001\u0000pq\u0001"+
52510 		"\u0000\u0018\u001d\u0003\u0000\u0006\u0007\u000f\u0010\u00d6\u00d6\u0001"+
52511 		"\u0000\u0093\u0097\u0001\u0000\u00dd\u00de\u0002\u0000\u00a7\u00a7\u01a5"+
52512 		"\u01a5\u0001\u0000vw\u0002\u0000\u00f5\u00f5\u00ff\u00ff\b\u0000\u0081"+
52513 		"\u0081\u0085\u0086\u00ab\u00ad\u00af\u00b7\u00d6\u00d6\u014a\u014a\u01a7"+
52514 		"\u01b6\u02ac\u02ac\u0002\u0000\u00de\u00de\u011e\u011e\u0002\u0000\u0182"+
52515 		"\u0182\u0193\u0193\u0005\u0000\u00dd\u00dd\u00f4\u00f4\u0113\u0113\u0118"+
52516 		"\u0118\u017f\u017f\t\u0000\u0116\u0116\u0122\u0122\u017b\u017c\u0182\u0182"+
52517 		"\u018b\u018c\u0190\u0191\u0196\u0196\u01a2\u01a2\u01d8\u01d8\u0003\u0000"+
52518 		"\u00f0\u00f0\u0113\u0113\u0125\u0125\u0001\u0000\u012b\u012c\u0002\u0000"+
52519 		"\u00ae\u00ae\u0114\u0114\u0001\u0000GH\u0002\u0000\u00eb\u00eb\u0102\u0102"+
52520 		"\u0002\u0000\u00fd\u00fd\u011d\u011d\u0001\u0000\u00f1\u00f2\u0001\u0000"+
52521 		"01\u0002\u0000jj\u0098\u0098\u0003\u0000\u00dd\u00dd\u0113\u0113\u0118"+
52522 		"\u0118\u0002\u0000\u010a\u010b\u0119\u0119\u0001\u0000\u018e\u018f\u0001"+
52523 		"\u0000Z[\u0002\u0000\u00e3\u00e3\u0112\u0112\u0001\u0000\u009a\u009b\u0003"+
52524 		"\u0000\u008a\u008a\u008c\u008e\u00f7\u00fa\u0003\u0000;;\u009b\u009b\u00ef"+
52525 		"\u00ef\u0002\u0000\u0113\u0113\u01dd\u01dd\u0003\u0000WW\u00c9\u00c9\u0115"+
52526 		"\u0115\u0001\u0000\u01e3\u01e6\u0002\u0000\r\r\u01e3\u01e6\u0001\u0000"+
52527 		"\u01ed\u01ee\u0001\u0000\u01ef\u01f2\u0002\u0000\u00c9\u00c9\u01f3\u01f4"+
52528 		"\u0003\u0000\u00d1\u00d1\u01b7\u01b7\u01fb\u01fb\u0003\u0000\u015b\u015b"+
52529 		"\u01f6\u01f6\u0206\u0206\u0002\u0000\u00eb\u00eb\u020f\u020f\u0002\u0000"+
52530 		"pp\u00e5\u00e5\u0001\u0000\u026f\u0270\u0001\u0000\u01e4\u01e5\u0004\u0000"+
52531 		"``\u0115\u0115\u0213\u0213\u0269\u0269\u0002\u0000\u0116\u0116\u0267\u0268"+
52532 		"\u0002\u0000\u00c9\u00c9\u021e\u021e\u0001\u0000\u0264\u0266\u0002\u0000"+
52533 		"\u00c7\u00c7\u0261\u0262\u0001\u0000\u00c6\u00c7\u0001\u0000\u021b\u021c"+
52534 		"\u0002\u0000\u00d1\u00d1\u021d\u021d\u0002\u0000\u00fa\u00fb\u0251\u0251"+
52535 		"\u0002\u0000\u00a4\u00a4\u024f\u024f\u0002\u0000\u00ef\u00ef\u0115\u0115"+
52536 		"\u0004\u0000pp\u00ef\u00ef\u0113\u0113\u024a\u024a\u0002\u0000\u00fa\u00fa"+
52537 		"\u0251\u0251\u0003\u0000WW\u00c6\u00c6\u023b\u023b\u0002\u0000\u0113\u0113"+
52538 		"\u0239\u023a\u0002\u0000\u00fb\u00fb\u0225\u0225\u0002\u0000NNpp\u0002"+
52539 		"\u0000XX\\\\\u0002\u0000WWZ[\u0001\u0000\u01b8\u01b9\u0002\u0000ss\u0107"+
52540 		"\u0107\u0003\u0000\u00bd\u00bd\u0107\u0107\u0132\u0132\u0002\u0000\u00bd"+
52541 		"\u00be\u0107\u0107\u0002\u0000\u009b\u009b\u00c2\u00c2\u0001\u0000\u02a2"+
52542 		"\u02a3\u0002\u0000\u00ef\u00ef\u02a5\u02a5\u0002\u0000TTee\u0002\u0000"+
52543 		"\u00ca\u00ca\u0135\u0135\u0002\u0000\u012d\u012d\u0146\u0146\u0002\u0000"+
52544 		"\u00ca\u00ca\u0173\u0173\u0001\u0000\u0138\u0139\u0001\u0000\u015b\u015c"+
52545 		"\u0002\u0000\u00ca\u00ca\u013a\u013a\u0002\u0000..\u012b\u012b\u0002\u0000"+
52546 		"\u0130\u0130\u028e\u028e\u0005\u000066\u00ca\u00ca\u00e9\u00ea\u010e\u010e"+
52547 		"\u0114\u0114\u0002\u0000TTdd\u0002\u0000\u02b3\u02b3\u02b5\u02b5\u0002"+
52548 		"\u0000\u0295\u0295\u029a\u029a\u1e7e\u0000\u03f6\u0001\u0000\u0000\u0000"+
52549 		"\u0002\u03fb\u0001\u0000\u0000\u0000\u0004\u0409\u0001\u0000\u0000\u0000"+
52550 		"\u0006\u040b\u0001\u0000\u0000\u0000\b\u040f\u0001\u0000\u0000\u0000\n"+
52551 		"\u0411\u0001\u0000\u0000\u0000\f\u0421\u0001\u0000\u0000\u0000\u000e\u0428"+
52552 		"\u0001\u0000\u0000\u0000\u0010\u0438\u0001\u0000\u0000\u0000\u0012\u043c"+
52553 		"\u0001\u0000\u0000\u0000\u0014\u0444\u0001\u0000\u0000\u0000\u0016\u0448"+
52554 		"\u0001\u0000\u0000\u0000\u0018\u044e\u0001\u0000\u0000\u0000\u001a\u0457"+
52555 		"\u0001\u0000\u0000\u0000\u001c\u0459\u0001\u0000\u0000\u0000\u001e\u045c"+
52556 		"\u0001\u0000\u0000\u0000 \u0467\u0001\u0000\u0000\u0000\"\u0469\u0001"+
52557 		"\u0000\u0000\u0000$\u046b\u0001\u0000\u0000\u0000&\u046d\u0001\u0000\u0000"+
52558 		"\u0000(\u046f\u0001\u0000\u0000\u0000*\u0473\u0001\u0000\u0000\u0000,"+
52559 		"\u0477\u0001\u0000\u0000\u0000.\u0479\u0001\u0000\u0000\u00000\u047b\u0001"+
52560 		"\u0000\u0000\u00002\u047d\u0001\u0000\u0000\u00004\u047f\u0001\u0000\u0000"+
52561 		"\u00006\u0484\u0001\u0000\u0000\u00008\u048b\u0001\u0000\u0000\u0000:"+
52562 		"\u0495\u0001\u0000\u0000\u0000<\u049c\u0001\u0000\u0000\u0000>\u04a3\u0001"+
52563 		"\u0000\u0000\u0000@\u04b3\u0001\u0000\u0000\u0000B\u04ba\u0001\u0000\u0000"+
52564 		"\u0000D\u04be\u0001\u0000\u0000\u0000F\u04c0\u0001\u0000\u0000\u0000H"+
52565 		"\u04c5\u0001\u0000\u0000\u0000J\u04cb\u0001\u0000\u0000\u0000L\u04d0\u0001"+
52566 		"\u0000\u0000\u0000N\u04d2\u0001\u0000\u0000\u0000P\u04d4\u0001\u0000\u0000"+
52567 		"\u0000R\u04df\u0001\u0000\u0000\u0000T\u04eb\u0001\u0000\u0000\u0000V"+
52568 		"\u04f8\u0001\u0000\u0000\u0000X\u04fa\u0001\u0000\u0000\u0000Z\u04fc\u0001"+
52569 		"\u0000\u0000\u0000\\\u0500\u0001\u0000\u0000\u0000^\u0502\u0001\u0000"+
52570 		"\u0000\u0000`\u050d\u0001\u0000\u0000\u0000b\u051a\u0001\u0000\u0000\u0000"+
52571 		"d\u0529\u0001\u0000\u0000\u0000f\u052b\u0001\u0000\u0000\u0000h\u052d"+
52572 		"\u0001\u0000\u0000\u0000j\u052f\u0001\u0000\u0000\u0000l\u0549\u0001\u0000"+
52573 		"\u0000\u0000n\u0576\u0001\u0000\u0000\u0000p\u0578\u0001\u0000\u0000\u0000"+
52574 		"r\u05bf\u0001\u0000\u0000\u0000t\u05cc\u0001\u0000\u0000\u0000v\u05ce"+
52575 		"\u0001\u0000\u0000\u0000x\u05e0\u0001\u0000\u0000\u0000z\u05e2\u0001\u0000"+
52576 		"\u0000\u0000|\u05e7\u0001\u0000\u0000\u0000~\u05e9\u0001\u0000\u0000\u0000"+
52577 		"\u0080\u05f0\u0001\u0000\u0000\u0000\u0082\u05fb\u0001\u0000\u0000\u0000"+
52578 		"\u0084\u060b\u0001\u0000\u0000\u0000\u0086\u0624\u0001\u0000\u0000\u0000"+
52579 		"\u0088\u0626\u0001\u0000\u0000\u0000\u008a\u0634\u0001\u0000\u0000\u0000"+
52580 		"\u008c\u0639\u0001\u0000\u0000\u0000\u008e\u0640\u0001\u0000\u0000\u0000"+
52581 		"\u0090\u0642\u0001\u0000\u0000\u0000\u0092\u065c\u0001\u0000\u0000\u0000"+
52582 		"\u0094\u0668\u0001\u0000\u0000\u0000\u0096\u0678\u0001\u0000\u0000\u0000"+
52583 		"\u0098\u067a\u0001\u0000\u0000\u0000\u009a\u0682\u0001\u0000\u0000\u0000"+
52584 		"\u009c\u068e\u0001\u0000\u0000\u0000\u009e\u069b\u0001\u0000\u0000\u0000"+
52585 		"\u00a0\u069e\u0001\u0000\u0000\u0000\u00a2\u06ab\u0001\u0000\u0000\u0000"+
52586 		"\u00a4\u06b5\u0001\u0000\u0000\u0000\u00a6\u06ba\u0001\u0000\u0000\u0000"+
52587 		"\u00a8\u06bc\u0001\u0000\u0000\u0000\u00aa\u06c3\u0001\u0000\u0000\u0000"+
52588 		"\u00ac\u06cb\u0001\u0000\u0000\u0000\u00ae\u06d3\u0001\u0000\u0000\u0000"+
52589 		"\u00b0\u06d5\u0001\u0000\u0000\u0000\u00b2\u06e6\u0001\u0000\u0000\u0000"+
52590 		"\u00b4\u06e8\u0001\u0000\u0000\u0000\u00b6\u06ec\u0001\u0000\u0000\u0000"+
52591 		"\u00b8\u06f1\u0001\u0000\u0000\u0000\u00ba\u06f4\u0001\u0000\u0000\u0000"+
52592 		"\u00bc\u06f6\u0001\u0000\u0000\u0000\u00be\u06f9\u0001\u0000\u0000\u0000"+
52593 		"\u00c0\u06ff\u0001\u0000\u0000\u0000\u00c2\u0709\u0001\u0000\u0000\u0000"+
52594 		"\u00c4\u070b\u0001\u0000\u0000\u0000\u00c6\u070f\u0001\u0000\u0000\u0000"+
52595 		"\u00c8\u071d\u0001\u0000\u0000\u0000\u00ca\u0724\u0001\u0000\u0000\u0000"+
52596 		"\u00cc\u0726\u0001\u0000\u0000\u0000\u00ce\u072e\u0001\u0000\u0000\u0000"+
52597 		"\u00d0\u0730\u0001\u0000\u0000\u0000\u00d2\u0732\u0001\u0000\u0000\u0000"+
52598 		"\u00d4\u073a\u0001\u0000\u0000\u0000\u00d6\u073c\u0001\u0000\u0000\u0000"+
52599 		"\u00d8\u073e\u0001\u0000\u0000\u0000\u00da\u0740\u0001\u0000\u0000\u0000"+
52600 		"\u00dc\u0742\u0001\u0000\u0000\u0000\u00de\u0744\u0001\u0000\u0000\u0000"+
52601 		"\u00e0\u0747\u0001\u0000\u0000\u0000\u00e2\u0749\u0001\u0000\u0000\u0000"+
52602 		"\u00e4\u0754\u0001\u0000\u0000\u0000\u00e6\u0758\u0001\u0000\u0000\u0000"+
52603 		"\u00e8\u075a\u0001\u0000\u0000\u0000\u00ea\u0760\u0001\u0000\u0000\u0000"+
52604 		"\u00ec\u0769\u0001\u0000\u0000\u0000\u00ee\u076e\u0001\u0000\u0000\u0000"+
52605 		"\u00f0\u0778\u0001\u0000\u0000\u0000\u00f2\u0782\u0001\u0000\u0000\u0000"+
52606 		"\u00f4\u078b\u0001\u0000\u0000\u0000\u00f6\u0796\u0001\u0000\u0000\u0000"+
52607 		"\u00f8\u079f\u0001\u0000\u0000\u0000\u00fa\u07ac\u0001\u0000\u0000\u0000"+
52608 		"\u00fc\u07b5\u0001\u0000\u0000\u0000\u00fe\u07c0\u0001\u0000\u0000\u0000"+
52609 		"\u0100\u07ca\u0001\u0000\u0000\u0000\u0102\u07d6\u0001\u0000\u0000\u0000"+
52610 		"\u0104\u07dc\u0001\u0000\u0000\u0000\u0106\u07e2\u0001\u0000\u0000\u0000"+
52611 		"\u0108\u07e7\u0001\u0000\u0000\u0000\u010a\u07ee\u0001\u0000\u0000\u0000"+
52612 		"\u010c\u07f7\u0001\u0000\u0000\u0000\u010e\u0802\u0001\u0000\u0000\u0000"+
52613 		"\u0110\u080b\u0001\u0000\u0000\u0000\u0112\u0812\u0001\u0000\u0000\u0000"+
52614 		"\u0114\u081b\u0001\u0000\u0000\u0000\u0116\u0828\u0001\u0000\u0000\u0000"+
52615 		"\u0118\u0835\u0001\u0000\u0000\u0000\u011a\u0842\u0001\u0000\u0000\u0000"+
52616 		"\u011c\u084f\u0001\u0000\u0000\u0000\u011e\u0864\u0001\u0000\u0000\u0000"+
52617 		"\u0120\u0871\u0001\u0000\u0000\u0000\u0122\u0875\u0001\u0000\u0000\u0000"+
52618 		"\u0124\u087c\u0001\u0000\u0000\u0000\u0126\u0882\u0001\u0000\u0000\u0000"+
52619 		"\u0128\u0884\u0001\u0000\u0000\u0000\u012a\u0888\u0001\u0000\u0000\u0000"+
52620 		"\u012c\u089c\u0001\u0000\u0000\u0000\u012e\u089e\u0001\u0000\u0000\u0000"+
52621 		"\u0130\u08df\u0001\u0000\u0000\u0000\u0132\u08e1\u0001\u0000\u0000\u0000"+
52622 		"\u0134\u08f1\u0001\u0000\u0000\u0000\u0136\u08fa\u0001\u0000\u0000\u0000"+
52623 		"\u0138\u0903\u0001\u0000\u0000\u0000\u013a\u0920\u0001\u0000\u0000\u0000"+
52624 		"\u013c\u0924\u0001\u0000\u0000\u0000\u013e\u092b\u0001\u0000\u0000\u0000"+
52625 		"\u0140\u0933\u0001\u0000\u0000\u0000\u0142\u0935\u0001\u0000\u0000\u0000"+
52626 		"\u0144\u0949\u0001\u0000\u0000\u0000\u0146\u094b\u0001\u0000\u0000\u0000"+
52627 		"\u0148\u0951\u0001\u0000\u0000\u0000\u014a\u0954\u0001\u0000\u0000\u0000"+
52628 		"\u014c\u095d\u0001\u0000\u0000\u0000\u014e\u095f\u0001\u0000\u0000\u0000"+
52629 		"\u0150\u0968\u0001\u0000\u0000\u0000\u0152\u097e\u0001\u0000\u0000\u0000"+
52630 		"\u0154\u0985\u0001\u0000\u0000\u0000\u0156\u0987\u0001\u0000\u0000\u0000"+
52631 		"\u0158\u0991\u0001\u0000\u0000\u0000\u015a\u099f\u0001\u0000\u0000\u0000"+
52632 		"\u015c\u09ae\u0001\u0000\u0000\u0000\u015e\u09b0\u0001\u0000\u0000\u0000"+
52633 		"\u0160\u09b3\u0001\u0000\u0000\u0000\u0162\u09c1\u0001\u0000\u0000\u0000"+
52634 		"\u0164\u09c3\u0001\u0000\u0000\u0000\u0166\u09d0\u0001\u0000\u0000\u0000"+
52635 		"\u0168\u09d8\u0001\u0000\u0000\u0000\u016a\u09df\u0001\u0000\u0000\u0000"+
52636 		"\u016c\u09e6\u0001\u0000\u0000\u0000\u016e\u09e9\u0001\u0000\u0000\u0000"+
52637 		"\u0170\u09f2\u0001\u0000\u0000\u0000\u0172\u09f7\u0001\u0000\u0000\u0000"+
52638 		"\u0174\u09fd\u0001\u0000\u0000\u0000\u0176\u0a09\u0001\u0000\u0000\u0000"+
52639 		"\u0178\u0a21\u0001\u0000\u0000\u0000\u017a\u0a23\u0001\u0000\u0000\u0000"+
52640 		"\u017c\u0a2e\u0001\u0000\u0000\u0000\u017e\u0a41\u0001\u0000\u0000\u0000"+
52641 		"\u0180\u0a48\u0001\u0000\u0000\u0000\u0182\u0a57\u0001\u0000\u0000\u0000"+
52642 		"\u0184\u0a94\u0001\u0000\u0000\u0000\u0186\u0a96\u0001\u0000\u0000\u0000"+
52643 		"\u0188\u0aa2\u0001\u0000\u0000\u0000\u018a\u0ab4\u0001\u0000\u0000\u0000"+
52644 		"\u018c\u0aba\u0001\u0000\u0000\u0000\u018e\u0acc\u0001\u0000\u0000\u0000"+
52645 		"\u0190\u0ace\u0001\u0000\u0000\u0000\u0192\u0af5\u0001\u0000\u0000\u0000"+
52646 		"\u0194\u0af7\u0001\u0000\u0000\u0000\u0196\u0b0d\u0001\u0000\u0000\u0000"+
52647 		"\u0198\u0b1b\u0001\u0000\u0000\u0000\u019a\u0b1f\u0001\u0000\u0000\u0000"+
52648 		"\u019c\u0b26\u0001\u0000\u0000\u0000\u019e\u0b34\u0001\u0000\u0000\u0000"+
52649 		"\u01a0\u0b38\u0001\u0000\u0000\u0000\u01a2\u0b46\u0001\u0000\u0000\u0000"+
52650 		"\u01a4\u0b4a\u0001\u0000\u0000\u0000\u01a6\u0b59\u0001\u0000\u0000\u0000"+
52651 		"\u01a8\u0b5b\u0001\u0000\u0000\u0000\u01aa\u0b65\u0001\u0000\u0000\u0000"+
52652 		"\u01ac\u0b79\u0001\u0000\u0000\u0000\u01ae\u0b83\u0001\u0000\u0000\u0000"+
52653 		"\u01b0\u0b90\u0001\u0000\u0000\u0000\u01b2\u0b94\u0001\u0000\u0000\u0000"+
52654 		"\u01b4\u0bb1\u0001\u0000\u0000\u0000\u01b6\u0bb3\u0001\u0000\u0000\u0000"+
52655 		"\u01b8\u0bb5\u0001\u0000\u0000\u0000\u01ba\u0bc1\u0001\u0000\u0000\u0000"+
52656 		"\u01bc\u0bce\u0001\u0000\u0000\u0000\u01be\u0bd6\u0001\u0000\u0000\u0000"+
52657 		"\u01c0\u0bdc\u0001\u0000\u0000\u0000\u01c2\u0bee\u0001\u0000\u0000\u0000"+
52658 		"\u01c4\u0bf6\u0001\u0000\u0000\u0000\u01c6\u0bfd\u0001\u0000\u0000\u0000"+
52659 		"\u01c8\u0c06\u0001\u0000\u0000\u0000\u01ca\u0c15\u0001\u0000\u0000\u0000"+
52660 		"\u01cc\u0c1c\u0001\u0000\u0000\u0000\u01ce\u0c25\u0001\u0000\u0000\u0000"+
52661 		"\u01d0\u0c27\u0001\u0000\u0000\u0000\u01d2\u0c2c\u0001\u0000\u0000\u0000"+
52662 		"\u01d4\u0c2f\u0001\u0000\u0000\u0000\u01d6\u0c3a\u0001\u0000\u0000\u0000"+
52663 		"\u01d8\u0c3c\u0001\u0000\u0000\u0000\u01da\u0c5c\u0001\u0000\u0000\u0000"+
52664 		"\u01dc\u0c5e\u0001\u0000\u0000\u0000\u01de\u0c6d\u0001\u0000\u0000\u0000"+
52665 		"\u01e0\u0c81\u0001\u0000\u0000\u0000\u01e2\u0cb8\u0001\u0000\u0000\u0000"+
52666 		"\u01e4\u0cc0\u0001\u0000\u0000\u0000\u01e6\u0cc2\u0001\u0000\u0000\u0000"+
52667 		"\u01e8\u0cd4\u0001\u0000\u0000\u0000\u01ea\u0ceb\u0001\u0000\u0000\u0000"+
52668 		"\u01ec\u0d01\u0001\u0000\u0000\u0000\u01ee\u0d0d\u0001\u0000\u0000\u0000"+
52669 		"\u01f0\u0d0f\u0001\u0000\u0000\u0000\u01f2\u0d27\u0001\u0000\u0000\u0000"+
52670 		"\u01f4\u0d29\u0001\u0000\u0000\u0000\u01f6\u0d2f\u0001\u0000\u0000\u0000"+
52671 		"\u01f8\u0d3d\u0001\u0000\u0000\u0000\u01fa\u0d3f\u0001\u0000\u0000\u0000"+
52672 		"\u01fc\u0d6d\u0001\u0000\u0000\u0000\u01fe\u0d81\u0001\u0000\u0000\u0000"+
52673 		"\u0200\u0d83\u0001\u0000\u0000\u0000\u0202\u0d9e\u0001\u0000\u0000\u0000"+
52674 		"\u0204\u0db3\u0001\u0000\u0000\u0000\u0206\u0db6\u0001\u0000\u0000\u0000"+
52675 		"\u0208\u0dd1\u0001\u0000\u0000\u0000\u020a\u0dd3\u0001\u0000\u0000\u0000"+
52676 		"\u020c\u0def\u0001\u0000\u0000\u0000\u020e\u0df1\u0001\u0000\u0000\u0000"+
52677 		"\u0210\u0e08\u0001\u0000\u0000\u0000\u0212\u0e20\u0001\u0000\u0000\u0000"+
52678 		"\u0214\u0e39\u0001\u0000\u0000\u0000\u0216\u0e44\u0001\u0000\u0000\u0000"+
52679 		"\u0218\u0e60\u0001\u0000\u0000\u0000\u021a\u0e6c\u0001\u0000\u0000\u0000"+
52680 		"\u021c\u0e79\u0001\u0000\u0000\u0000\u021e\u0e7b\u0001\u0000\u0000\u0000"+
52681 		"\u0220\u0e87\u0001\u0000\u0000\u0000\u0222\u0e90\u0001\u0000\u0000\u0000"+
52682 		"\u0224\u0ea0\u0001\u0000\u0000\u0000\u0226\u0ec5\u0001\u0000\u0000\u0000"+
52683 		"\u0228\u0edd\u0001\u0000\u0000\u0000\u022a\u0ee8\u0001\u0000\u0000\u0000"+
52684 		"\u022c\u0ef4\u0001\u0000\u0000\u0000\u022e\u0ef6\u0001\u0000\u0000\u0000"+
52685 		"\u0230\u0eff\u0001\u0000\u0000\u0000\u0232\u0f17\u0001\u0000\u0000\u0000"+
52686 		"\u0234\u0f46\u0001\u0000\u0000\u0000\u0236\u0f48\u0001\u0000\u0000\u0000"+
52687 		"\u0238\u0f53\u0001\u0000\u0000\u0000\u023a\u0f71\u0001\u0000\u0000\u0000"+
52688 		"\u023c\u0f75\u0001\u0000\u0000\u0000\u023e\u0f9b\u0001\u0000\u0000\u0000"+
52689 		"\u0240\u0fb4\u0001\u0000\u0000\u0000\u0242\u0ff4\u0001\u0000\u0000\u0000"+
52690 		"\u0244\u1039\u0001\u0000\u0000\u0000\u0246\u103b\u0001\u0000\u0000\u0000"+
52691 		"\u0248\u1046\u0001\u0000\u0000\u0000\u024a\u105d\u0001\u0000\u0000\u0000"+
52692 		"\u024c\u1069\u0001\u0000\u0000\u0000\u024e\u10a1\u0001\u0000\u0000\u0000"+
52693 		"\u0250\u10af\u0001\u0000\u0000\u0000\u0252\u10be\u0001\u0000\u0000\u0000"+
52694 		"\u0254\u10c8\u0001\u0000\u0000\u0000\u0256\u10f5\u0001\u0000\u0000\u0000"+
52695 		"\u0258\u10fb\u0001\u0000\u0000\u0000\u025a\u1113\u0001\u0000\u0000\u0000"+
52696 		"\u025c\u1117\u0001\u0000\u0000\u0000\u025e\u1139\u0001\u0000\u0000\u0000"+
52697 		"\u0260\u113b\u0001\u0000\u0000\u0000\u0262\u115a\u0001\u0000\u0000\u0000"+
52698 		"\u0264\u115c\u0001\u0000\u0000\u0000\u0266\u1163\u0001\u0000\u0000\u0000"+
52699 		"\u0268\u1180\u0001\u0000\u0000\u0000\u026a\u1186\u0001\u0000\u0000\u0000"+
52700 		"\u026c\u119b\u0001\u0000\u0000\u0000\u026e\u119d\u0001\u0000\u0000\u0000"+
52701 		"\u0270\u11df\u0001\u0000\u0000\u0000\u0272\u11ee\u0001\u0000\u0000\u0000"+
52702 		"\u0274\u11f6\u0001\u0000\u0000\u0000\u0276\u120d\u0001\u0000\u0000\u0000"+
52703 		"\u0278\u1216\u0001\u0000\u0000\u0000\u027a\u121e\u0001\u0000\u0000\u0000"+
52704 		"\u027c\u1220\u0001\u0000\u0000\u0000\u027e\u122e\u0001\u0000\u0000\u0000"+
52705 		"\u0280\u1230\u0001\u0000\u0000\u0000\u0282\u123b\u0001\u0000\u0000\u0000"+
52706 		"\u0284\u124c\u0001\u0000\u0000\u0000\u0286\u1255\u0001\u0000\u0000\u0000"+
52707 		"\u0288\u125c\u0001\u0000\u0000\u0000\u028a\u1260\u0001\u0000\u0000\u0000"+
52708 		"\u028c\u1262\u0001\u0000\u0000\u0000\u028e\u126d\u0001\u0000\u0000\u0000"+
52709 		"\u0290\u1280\u0001\u0000\u0000\u0000\u0292\u129c\u0001\u0000\u0000\u0000"+
52710 		"\u0294\u129f\u0001\u0000\u0000\u0000\u0296\u12b5\u0001\u0000\u0000\u0000"+
52711 		"\u0298\u12be\u0001\u0000\u0000\u0000\u029a\u12cd\u0001\u0000\u0000\u0000"+
52712 		"\u029c\u12d5\u0001\u0000\u0000\u0000\u029e\u12e4\u0001\u0000\u0000\u0000"+
52713 		"\u02a0\u12e8\u0001\u0000\u0000\u0000\u02a2\u1301\u0001\u0000\u0000\u0000"+
52714 		"\u02a4\u1305\u0001\u0000\u0000\u0000\u02a6\u1308\u0001\u0000\u0000\u0000"+
52715 		"\u02a8\u131d\u0001\u0000\u0000\u0000\u02aa\u1335\u0001\u0000\u0000\u0000"+
52716 		"\u02ac\u1337\u0001\u0000\u0000\u0000\u02ae\u1345\u0001\u0000\u0000\u0000"+
52717 		"\u02b0\u1347\u0001\u0000\u0000\u0000\u02b2\u1357\u0001\u0000\u0000\u0000"+
52718 		"\u02b4\u1370\u0001\u0000\u0000\u0000\u02b6\u1374\u0001\u0000\u0000\u0000"+
52719 		"\u02b8\u1389\u0001\u0000\u0000\u0000\u02ba\u138b\u0001\u0000\u0000\u0000"+
52720 		"\u02bc\u13a6\u0001\u0000\u0000\u0000\u02be\u13a8\u0001\u0000\u0000\u0000"+
52721 		"\u02c0\u13aa\u0001\u0000\u0000\u0000\u02c2\u13ad\u0001\u0000\u0000\u0000"+
52722 		"\u02c4\u13b0\u0001\u0000\u0000\u0000\u02c6\u13b8\u0001\u0000\u0000\u0000"+
52723 		"\u02c8\u13d2\u0001\u0000\u0000\u0000\u02ca\u13ec\u0001\u0000\u0000\u0000"+
52724 		"\u02cc\u13f2\u0001\u0000\u0000\u0000\u02ce\u13f4\u0001\u0000\u0000\u0000"+
52725 		"\u02d0\u13f7\u0001\u0000\u0000\u0000\u02d2\u1401\u0001\u0000\u0000\u0000"+
52726 		"\u02d4\u1404\u0001\u0000\u0000\u0000\u02d6\u1408\u0001\u0000\u0000\u0000"+
52727 		"\u02d8\u140b\u0001\u0000\u0000\u0000\u02da\u1413\u0001\u0000\u0000\u0000"+
52728 		"\u02dc\u141a\u0001\u0000\u0000\u0000\u02de\u1426\u0001\u0000\u0000\u0000"+
52729 		"\u02e0\u142e\u0001\u0000\u0000\u0000\u02e2\u1437\u0001\u0000\u0000\u0000"+
52730 		"\u02e4\u143d\u0001\u0000\u0000\u0000\u02e6\u1485\u0001\u0000\u0000\u0000"+
52731 		"\u02e8\u14bd\u0001\u0000\u0000\u0000\u02ea\u14bf\u0001\u0000\u0000\u0000"+
52732 		"\u02ec\u14c5\u0001\u0000\u0000\u0000\u02ee\u1505\u0001\u0000\u0000\u0000"+
52733 		"\u02f0\u1515\u0001\u0000\u0000\u0000\u02f2\u152b\u0001\u0000\u0000\u0000"+
52734 		"\u02f4\u1535\u0001\u0000\u0000\u0000\u02f6\u1546\u0001\u0000\u0000\u0000"+
52735 		"\u02f8\u1548\u0001\u0000\u0000\u0000\u02fa\u154a\u0001\u0000\u0000\u0000"+
52736 		"\u02fc\u154c\u0001\u0000\u0000\u0000\u02fe\u154f\u0001\u0000\u0000\u0000"+
52737 		"\u0300\u1554\u0001\u0000\u0000\u0000\u0302\u156b\u0001\u0000\u0000\u0000"+
52738 		"\u0304\u157e\u0001\u0000\u0000\u0000\u0306\u1590\u0001\u0000\u0000\u0000"+
52739 		"\u0308\u1594\u0001\u0000\u0000\u0000\u030a\u15a0\u0001\u0000\u0000\u0000"+
52740 		"\u030c\u15a7\u0001\u0000\u0000\u0000\u030e\u15ab\u0001\u0000\u0000\u0000"+
52741 		"\u0310\u15ad\u0001\u0000\u0000\u0000\u0312\u15b5\u0001\u0000\u0000\u0000"+
52742 		"\u0314\u15ca\u0001\u0000\u0000\u0000\u0316\u15db\u0001\u0000\u0000\u0000"+
52743 		"\u0318\u15e0\u0001\u0000\u0000\u0000\u031a\u15f5\u0001\u0000\u0000\u0000"+
52744 		"\u031c\u1606\u0001\u0000\u0000\u0000\u031e\u1621\u0001\u0000\u0000\u0000"+
52745 		"\u0320\u1633\u0001\u0000\u0000\u0000\u0322\u1682\u0001\u0000\u0000\u0000"+
52746 		"\u0324\u1696\u0001\u0000\u0000\u0000\u0326\u173f\u0001\u0000\u0000\u0000"+
52747 		"\u0328\u1744\u0001\u0000\u0000\u0000\u032a\u174e\u0001\u0000\u0000\u0000"+
52748 		"\u032c\u1759\u0001\u0000\u0000\u0000\u032e\u1763\u0001\u0000\u0000\u0000"+
52749 		"\u0330\u176c\u0001\u0000\u0000\u0000\u0332\u1782\u0001\u0000\u0000\u0000"+
52750 		"\u0334\u178f\u0001\u0000\u0000\u0000\u0336\u1796\u0001\u0000\u0000\u0000"+
52751 		"\u0338\u17a2\u0001\u0000\u0000\u0000\u033a\u17af\u0001\u0000\u0000\u0000"+
52752 		"\u033c\u17bc\u0001\u0000\u0000\u0000\u033e\u17c7\u0001\u0000\u0000\u0000"+
52753 		"\u0340\u17d3\u0001\u0000\u0000\u0000\u0342\u17e5\u0001\u0000\u0000\u0000"+
52754 		"\u0344\u17f1\u0001\u0000\u0000\u0000\u0346\u17fe\u0001\u0000\u0000\u0000"+
52755 		"\u0348\u180b\u0001\u0000\u0000\u0000\u034a\u1817\u0001\u0000\u0000\u0000"+
52756 		"\u034c\u182a\u0001\u0000\u0000\u0000\u034e\u182e\u0001\u0000\u0000\u0000"+
52757 		"\u0350\u183b\u0001\u0000\u0000\u0000\u0352\u1848\u0001\u0000\u0000\u0000"+
52758 		"\u0354\u1851\u0001\u0000\u0000\u0000\u0356\u185b\u0001\u0000\u0000\u0000"+
52759 		"\u0358\u185d\u0001\u0000\u0000\u0000\u035a\u185f\u0001\u0000\u0000\u0000"+
52760 		"\u035c\u188b\u0001\u0000\u0000\u0000\u035e\u188d\u0001\u0000\u0000\u0000"+
52761 		"\u0360\u188f\u0001\u0000\u0000\u0000\u0362\u1891\u0001\u0000\u0000\u0000"+
52762 		"\u0364\u1899\u0001\u0000\u0000\u0000\u0366\u18a5\u0001\u0000\u0000\u0000"+
52763 		"\u0368\u18d7\u0001\u0000\u0000\u0000\u036a\u18e4\u0001\u0000\u0000\u0000"+
52764 		"\u036c\u18f1\u0001\u0000\u0000\u0000\u036e\u1919\u0001\u0000\u0000\u0000"+
52765 		"\u0370\u1929\u0001\u0000\u0000\u0000\u0372\u193f\u0001\u0000\u0000\u0000"+
52766 		"\u0374\u1941\u0001\u0000\u0000\u0000\u0376\u194f\u0001\u0000\u0000\u0000"+
52767 		"\u0378\u1959\u0001\u0000\u0000\u0000\u037a\u195b\u0001\u0000\u0000\u0000"+
52768 		"\u037c\u195d\u0001\u0000\u0000\u0000\u037e\u195f\u0001\u0000\u0000\u0000"+
52769 		"\u0380\u1964\u0001\u0000\u0000\u0000\u0382\u196b\u0001\u0000\u0000\u0000"+
52770 		"\u0384\u199b\u0001\u0000\u0000\u0000\u0386\u199d\u0001\u0000\u0000\u0000"+
52771 		"\u0388\u19a4\u0001\u0000\u0000\u0000\u038a\u19ab\u0001\u0000\u0000\u0000"+
52772 		"\u038c\u19ba\u0001\u0000\u0000\u0000\u038e\u19c8\u0001\u0000\u0000\u0000"+
52773 		"\u0390\u19ca\u0001\u0000\u0000\u0000\u0392\u19f2\u0001\u0000\u0000\u0000"+
52774 		"\u0394\u19f4\u0001\u0000\u0000\u0000\u0396\u19f6\u0001\u0000\u0000\u0000"+
52775 		"\u0398\u1a09\u0001\u0000\u0000\u0000\u039a\u1a11\u0001\u0000\u0000\u0000"+
52776 		"\u039c\u1a1f\u0001\u0000\u0000\u0000\u039e\u1a21\u0001\u0000\u0000\u0000"+
52777 		"\u03a0\u1a2d\u0001\u0000\u0000\u0000\u03a2\u1a44\u0001\u0000\u0000\u0000"+
52778 		"\u03a4\u1a46\u0001\u0000\u0000\u0000\u03a6\u1a49\u0001\u0000\u0000\u0000"+
52779 		"\u03a8\u1a56\u0001\u0000\u0000\u0000\u03aa\u1a58\u0001\u0000\u0000\u0000"+
52780 		"\u03ac\u1a6f\u0001\u0000\u0000\u0000\u03ae\u1a71\u0001\u0000\u0000\u0000"+
52781 		"\u03b0\u1a75\u0001\u0000\u0000\u0000\u03b2\u1a85\u0001\u0000\u0000\u0000"+
52782 		"\u03b4\u1aac\u0001\u0000\u0000\u0000\u03b6\u1aae\u0001\u0000\u0000\u0000"+
52783 		"\u03b8\u1ab6\u0001\u0000\u0000\u0000\u03ba\u1ab8\u0001\u0000\u0000\u0000"+
52784 		"\u03bc\u03f7\u0003\u02ae\u0157\u0000\u03bd\u03f7\u0003\u0294\u014a\u0000"+
52785 		"\u03be\u03f7\u0003\u029c\u014e\u0000\u03bf\u03f7\u0003\u02a6\u0153\u0000"+
52786 		"\u03c0\u03f7\u0003\u00eau\u0000\u03c1\u03f7\u0003\u00fe\u007f\u0000\u03c2"+
52787 		"\u03f7\u0003\u0112\u0089\u0000\u03c3\u03f7\u0003\u00e6s\u0000\u03c4\u03f7"+
52788 		"\u0003\u00ecv\u0000\u03c5\u03f7\u0003\u00f0x\u0000\u03c6\u03f7\u0003\u00f2"+
52789 		"y\u0000\u03c7\u03f7\u0003\u00f4z\u0000\u03c8\u03f7\u0003\u00f6{\u0000"+
52790 		"\u03c9\u03f7\u0003\u00f8|\u0000\u03ca\u03f7\u0003\u00fa}\u0000\u03cb\u03f7"+
52791 		"\u0003\u00fc~\u0000\u03cc\u03f7\u0003\u0108\u0084\u0000\u03cd\u03f7\u0003"+
52792 		"\u010a\u0085\u0000\u03ce\u03f7\u0003\u0100\u0080\u0000\u03cf\u03f7\u0003"+
52793 		"\u010c\u0086\u0000\u03d0\u03f7\u0003\u010e\u0087\u0000\u03d1\u03f7\u0003"+
52794 		"\u0106\u0083\u0000\u03d2\u03f7\u0003\u0110\u0088\u0000\u03d3\u03f7\u0003"+
52795 		"\u0114\u008a\u0000\u03d4\u03f7\u0003\u0116\u008b\u0000\u03d5\u03f7\u0003"+
52796 		"\u0118\u008c\u0000\u03d6\u03f7\u0003\u011a\u008d\u0000\u03d7\u03f7\u0003"+
52797 		"\u011c\u008e\u0000\u03d8\u03f7\u0003\u011e\u008f\u0000\u03d9\u03f7\u0003"+
52798 		"\u0120\u0090\u0000\u03da\u03f7\u0003\u0122\u0091\u0000\u03db\u03f7\u0003"+
52799 		"\u0124\u0092\u0000\u03dc\u03f7\u0003\u00eew\u0000\u03dd\u03f7\u0003\u0002"+
52800 		"\u0001\u0000\u03de\u03f7\u0003\n\u0005\u0000\u03df\u03f7\u0003\f\u0006"+
52801 		"\u0000\u03e0\u03f7\u0003\u0006\u0003\u0000\u03e1\u03f7\u0003\u000e\u0007"+
52802 		"\u0000\u03e2\u03f7\u0003\u0010\b\u0000\u03e3\u03f7\u0003\u0012\t\u0000"+
52803 		"\u03e4\u03f7\u0003\u0014\n\u0000\u03e5\u03f7\u0003\u0016\u000b\u0000\u03e6"+
52804 		"\u03f7\u0003\u02fe\u017f\u0000\u03e7\u03f7\u0003\u0310\u0188\u0000\u03e8"+
52805 		"\u03f7\u0003\u0316\u018b\u0000\u03e9\u03f7\u0003\u0364\u01b2\u0000\u03ea"+
52806 		"\u03f7\u0003\u0380\u01c0\u0000\u03eb\u03f7\u0003\u0382\u01c1\u0000\u03ec"+
52807 		"\u03f7\u0003\u0386\u01c3\u0000\u03ed\u03f7\u0003\u0388\u01c4\u0000\u03ee"+
52808 		"\u03f7\u0003\u038a\u01c5\u0000\u03ef\u03f7\u0003\u038c\u01c6\u0000\u03f0"+
52809 		"\u03f7\u0003\u03ae\u01d7\u0000\u03f1\u03f7\u0003\u03b0\u01d8\u0000\u03f2"+
52810 		"\u03f7\u0003\u00e0p\u0000\u03f3\u03f7\u0003\u00e2q\u0000\u03f4\u03f7\u0003"+
52811 		"\u0362\u01b1\u0000\u03f5\u03f7\u0003\u03ba\u01dd\u0000\u03f6\u03bc\u0001"+
52812 		"\u0000\u0000\u0000\u03f6\u03bd\u0001\u0000\u0000\u0000\u03f6\u03be\u0001"+
52813 		"\u0000\u0000\u0000\u03f6\u03bf\u0001\u0000\u0000\u0000\u03f6\u03c0\u0001"+
52814 		"\u0000\u0000\u0000\u03f6\u03c1\u0001\u0000\u0000\u0000\u03f6\u03c2\u0001"+
52815 		"\u0000\u0000\u0000\u03f6\u03c3\u0001\u0000\u0000\u0000\u03f6\u03c4\u0001"+
52816 		"\u0000\u0000\u0000\u03f6\u03c5\u0001\u0000\u0000\u0000\u03f6\u03c6\u0001"+
52817 		"\u0000\u0000\u0000\u03f6\u03c7\u0001\u0000\u0000\u0000\u03f6\u03c8\u0001"+
52818 		"\u0000\u0000\u0000\u03f6\u03c9\u0001\u0000\u0000\u0000\u03f6\u03ca\u0001"+
52819 		"\u0000\u0000\u0000\u03f6\u03cb\u0001\u0000\u0000\u0000\u03f6\u03cc\u0001"+
52820 		"\u0000\u0000\u0000\u03f6\u03cd\u0001\u0000\u0000\u0000\u03f6\u03ce\u0001"+
52821 		"\u0000\u0000\u0000\u03f6\u03cf\u0001\u0000\u0000\u0000\u03f6\u03d0\u0001"+
52822 		"\u0000\u0000\u0000\u03f6\u03d1\u0001\u0000\u0000\u0000\u03f6\u03d2\u0001"+
52823 		"\u0000\u0000\u0000\u03f6\u03d3\u0001\u0000\u0000\u0000\u03f6\u03d4\u0001"+
52824 		"\u0000\u0000\u0000\u03f6\u03d5\u0001\u0000\u0000\u0000\u03f6\u03d6\u0001"+
52825 		"\u0000\u0000\u0000\u03f6\u03d7\u0001\u0000\u0000\u0000\u03f6\u03d8\u0001"+
52826 		"\u0000\u0000\u0000\u03f6\u03d9\u0001\u0000\u0000\u0000\u03f6\u03da\u0001"+
52827 		"\u0000\u0000\u0000\u03f6\u03db\u0001\u0000\u0000\u0000\u03f6\u03dc\u0001"+
52828 		"\u0000\u0000\u0000\u03f6\u03dd\u0001\u0000\u0000\u0000\u03f6\u03de\u0001"+
52829 		"\u0000\u0000\u0000\u03f6\u03df\u0001\u0000\u0000\u0000\u03f6\u03e0\u0001"+
52830 		"\u0000\u0000\u0000\u03f6\u03e1\u0001\u0000\u0000\u0000\u03f6\u03e2\u0001"+
52831 		"\u0000\u0000\u0000\u03f6\u03e3\u0001\u0000\u0000\u0000\u03f6\u03e4\u0001"+
52832 		"\u0000\u0000\u0000\u03f6\u03e5\u0001\u0000\u0000\u0000\u03f6\u03e6\u0001"+
52833 		"\u0000\u0000\u0000\u03f6\u03e7\u0001\u0000\u0000\u0000\u03f6\u03e8\u0001"+
52834 		"\u0000\u0000\u0000\u03f6\u03e9\u0001\u0000\u0000\u0000\u03f6\u03ea\u0001"+
52835 		"\u0000\u0000\u0000\u03f6\u03eb\u0001\u0000\u0000\u0000\u03f6\u03ec\u0001"+
52836 		"\u0000\u0000\u0000\u03f6\u03ed\u0001\u0000\u0000\u0000\u03f6\u03ee\u0001"+
52837 		"\u0000\u0000\u0000\u03f6\u03ef\u0001\u0000\u0000\u0000\u03f6\u03f0\u0001"+
52838 		"\u0000\u0000\u0000\u03f6\u03f1\u0001\u0000\u0000\u0000\u03f6\u03f2\u0001"+
52839 		"\u0000\u0000\u0000\u03f6\u03f3\u0001\u0000\u0000\u0000\u03f6\u03f4\u0001"+
52840 		"\u0000\u0000\u0000\u03f6\u03f5\u0001\u0000\u0000\u0000\u03f7\u03f9\u0001"+
52841 		"\u0000\u0000\u0000\u03f8\u03fa\u0005+\u0000\u0000\u03f9\u03f8\u0001\u0000"+
52842 		"\u0000\u0000\u03f9\u03fa\u0001\u0000\u0000\u0000\u03fa\u0001\u0001\u0000"+
52843 		"\u0000\u0000\u03fb\u03fc\u0005:\u0000\u0000\u03fc\u03fd\u0005\u00ec\u0000"+
52844 		"\u0000\u03fd\u03fe\u0005\u0200\u0000\u0000\u03fe\u03ff\u0005\u01ff\u0000"+
52845 		"\u0000\u03ff\u0400\u0003\u0004\u0002\u0000\u0400\u0003\u0001\u0000\u0000"+
52846 		"\u0000\u0401\u0402\u0005\u0203\u0000\u0000\u0402\u040a\u0005\u028c\u0000"+
52847 		"\u0000\u0403\u0404\u0005\u0203\u0000\u0000\u0404\u040a\u0005\u028d\u0000"+
52848 		"\u0000\u0405\u0406\u0005\u0202\u0000\u0000\u0406\u040a\u0005\u0203\u0000"+
52849 		"\u0000\u0407\u040a\u0005\u0201\u0000\u0000\u0408\u040a\u0005\u0204\u0000"+
52850 		"\u0000\u0409\u0401\u0001\u0000\u0000\u0000\u0409\u0403\u0001\u0000\u0000"+
52851 		"\u0000\u0409\u0405\u0001\u0000\u0000\u0000\u0409\u0407\u0001\u0000\u0000"+
52852 		"\u0000\u0409\u0408\u0001\u0000\u0000\u0000\u040a\u0005\u0001\u0000\u0000"+
52853 		"\u0000\u040b\u040c\u0005:\u0000\u0000\u040c\u040d\u0005\u0192\u0000\u0000"+
52854 		"\u040d\u040e\u0003\b\u0004\u0000\u040e\u0007\u0001\u0000\u0000\u0000\u040f"+
52855 		"\u0410\u0007\u0000\u0000\u0000\u0410\t\u0001\u0000\u0000\u0000\u0411\u0412"+
52856 		"\u0005{\u0000\u0000\u0412\u041f\u0007\u0001\u0000\u0000\u0413\u0416\u0003"+
52857 		"\u00d4j\u0000\u0414\u0416\u0003\u00d6k\u0000\u0415\u0413\u0001\u0000\u0000"+
52858 		"\u0000\u0415\u0414\u0001\u0000\u0000\u0000\u0416\u041d\u0001\u0000\u0000"+
52859 		"\u0000\u0417\u0418\u0005L\u0000\u0000\u0418\u041b\u0005\u0218\u0000\u0000"+
52860 		"\u0419\u041c\u0003\u001c\u000e\u0000\u041a\u041c\u0005\u02b5\u0000\u0000"+
52861 		"\u041b\u0419\u0001\u0000\u0000\u0000\u041b\u041a\u0001\u0000\u0000\u0000"+
52862 		"\u041b\u041c\u0001\u0000\u0000\u0000\u041c\u041e\u0001\u0000\u0000\u0000"+
52863 		"\u041d\u0417\u0001\u0000\u0000\u0000\u041d\u041e\u0001\u0000\u0000\u0000"+
52864 		"\u041e\u0420\u0001\u0000\u0000\u0000\u041f\u0415\u0001\u0000\u0000\u0000"+
52865 		"\u041f\u0420\u0001\u0000\u0000\u0000\u0420\u000b\u0001\u0000\u0000\u0000"+
52866 		"\u0421\u0422\u0005{\u0000\u0000\u0422\u0423\u0005\u0217\u0000\u0000\u0423"+
52867 		"\u0426\u0007\u0001\u0000\u0000\u0424\u0427\u0003\u00d4j\u0000\u0425\u0427"+
52868 		"\u0003\u00d6k\u0000\u0426\u0424\u0001\u0000\u0000\u0000\u0426\u0425\u0001"+
52869 		"\u0000\u0000\u0000\u0426\u0427\u0001\u0000\u0000\u0000\u0427\r\u0001\u0000"+
52870 		"\u0000\u0000\u0428\u042e\u0005|\u0000\u0000\u0429\u042c\u0007\u0001\u0000"+
52871 		"\u0000\u042a\u042d\u0003\u00d4j\u0000\u042b\u042d\u0003\u00d6k\u0000\u042c"+
52872 		"\u042a\u0001\u0000\u0000\u0000\u042c\u042b\u0001\u0000\u0000\u0000\u042c"+
52873 		"\u042d\u0001\u0000\u0000\u0000\u042d\u042f\u0001\u0000\u0000\u0000\u042e"+
52874 		"\u0429\u0001\u0000\u0000\u0000\u042e\u042f\u0001\u0000\u0000\u0000\u042f"+
52875 		"\u0436\u0001\u0000\u0000\u0000\u0430\u0431\u0005L\u0000\u0000\u0431\u0432"+
52876 		"\u0005\u001f\u0000\u0000\u0432\u0433\u0005\u027f\u0000\u0000\u0433\u0434"+
52877 		"\u0005\u0018\u0000\u0000\u0434\u0435\u0007\u0000\u0000\u0000\u0435\u0437"+
52878 		"\u0005 \u0000\u0000\u0436\u0430\u0001\u0000\u0000\u0000\u0436\u0437\u0001"+
52879 		"\u0000\u0000\u0000\u0437\u000f\u0001\u0000\u0000\u0000\u0438\u043a\u0005"+
52880 		"|\u0000\u0000\u0439\u043b\u0005\u0219\u0000\u0000\u043a\u0439\u0001\u0000"+
52881 		"\u0000\u0000\u043a\u043b\u0001\u0000\u0000\u0000\u043b\u0011\u0001\u0000"+
52882 		"\u0000\u0000\u043c\u043d\u0005}\u0000\u0000\u043d\u0442\u0007\u0001\u0000"+
52883 		"\u0000\u043e\u0443\u0003\u00d4j\u0000\u043f\u0443\u0003\u00d6k\u0000\u0440"+
52884 		"\u0443\u0003\u00d8l\u0000\u0441\u0443\u0003\u00dam\u0000\u0442\u043e\u0001"+
52885 		"\u0000\u0000\u0000\u0442\u043f\u0001\u0000\u0000\u0000\u0442\u0440\u0001"+
52886 		"\u0000\u0000\u0000\u0442\u0441\u0001\u0000\u0000\u0000\u0442\u0443\u0001"+
52887 		"\u0000\u0000\u0000\u0443\u0013\u0001\u0000\u0000\u0000\u0444\u0446\u0005"+
52888 		"}\u0000\u0000\u0445\u0447\u0005\u0219\u0000\u0000\u0446\u0445\u0001\u0000"+
52889 		"\u0000\u0000\u0446\u0447\u0001\u0000\u0000\u0000\u0447\u0015\u0001\u0000"+
52890 		"\u0000\u0000\u0448\u0449\u0005\u0124\u0000\u0000\u0449\u044c\u0007\u0001"+
52891 		"\u0000\u0000\u044a\u044d\u0003\u00d8l\u0000\u044b\u044d\u0003\u00dam\u0000"+
52892 		"\u044c\u044a\u0001\u0000\u0000\u0000\u044c\u044b\u0001\u0000\u0000\u0000"+
52893 		"\u044d\u0017\u0001\u0000\u0000\u0000\u044e\u044f\u0005)\u0000\u0000\u044f"+
52894 		"\u0019\u0001\u0000\u0000\u0000\u0450\u0458\u0003\u001c\u000e\u0000\u0451"+
52895 		"\u0458\u0003\u001e\u000f\u0000\u0452\u0458\u0003 \u0010\u0000\u0453\u0458"+
52896 		"\u0003\"\u0011\u0000\u0454\u0458\u0003$\u0012\u0000\u0455\u0458\u0003"+
52897 		"&\u0013\u0000\u0456\u0458\u0003(\u0014\u0000\u0457\u0450\u0001\u0000\u0000"+
52898 		"\u0000\u0457\u0451\u0001\u0000\u0000\u0000\u0457\u0452\u0001\u0000\u0000"+
52899 		"\u0000\u0457\u0453\u0001\u0000\u0000\u0000\u0457\u0454\u0001\u0000\u0000"+
52900 		"\u0000\u0457\u0455\u0001\u0000\u0000\u0000\u0457\u0456\u0001\u0000\u0000"+
52901 		"\u0000\u0458\u001b\u0001\u0000\u0000\u0000\u0459\u045a\u0007\u0002\u0000"+
52902 		"\u0000\u045a\u001d\u0001\u0000\u0000\u0000\u045b\u045d\u0007\u0003\u0000"+
52903 		"\u0000\u045c\u045b\u0001\u0000\u0000\u0000\u045c\u045d\u0001\u0000\u0000"+
52904 		"\u0000\u045d\u045e\u0001\u0000\u0000\u0000\u045e\u045f\u0005\u02af\u0000"+
52905 		"\u0000\u045f\u001f\u0001\u0000\u0000\u0000\u0460\u0461\u0007\u0004\u0000"+
52906 		"\u0000\u0461\u0468\u0005\u02ae\u0000\u0000\u0462\u0463\u0005!\u0000\u0000"+
52907 		"\u0463\u0464\u0003*\u0015\u0000\u0464\u0465\u0005\u02ae\u0000\u0000\u0465"+
52908 		"\u0466\u0005\"\u0000\u0000\u0466\u0468\u0001\u0000\u0000\u0000\u0467\u0460"+
52909 		"\u0001\u0000\u0000\u0000\u0467\u0462\u0001\u0000\u0000\u0000\u0468!\u0001"+
52910 		"\u0000\u0000\u0000\u0469\u046a\u0005\u02b3\u0000\u0000\u046a#\u0001\u0000"+
52911 		"\u0000\u0000\u046b\u046c\u0005\u02b4\u0000\u0000\u046c%\u0001\u0000\u0000"+
52912 		"\u0000\u046d\u046e\u0007\u0005\u0000\u0000\u046e\'\u0001\u0000\u0000\u0000"+
52913 		"\u046f\u0470\u0005j\u0000\u0000\u0470)\u0001\u0000\u0000\u0000\u0471\u0474"+
52914 		"\u0003,\u0016\u0000\u0472\u0474\u0003.\u0017\u0000\u0473\u0471\u0001\u0000"+
52915 		"\u0000\u0000\u0473\u0472\u0001\u0000\u0000\u0000\u0474+\u0001\u0000\u0000"+
52916 		"\u0000\u0475\u0478\u0005\u02ac\u0000\u0000\u0476\u0478\u00030\u0018\u0000"+
52917 		"\u0477\u0475\u0001\u0000\u0000\u0000\u0477\u0476\u0001\u0000\u0000\u0000"+
52918 		"\u0478-\u0001\u0000\u0000\u0000\u0479\u047a\u0005\u02ad\u0000\u0000\u047a"+
52919 		"/\u0001\u0000\u0000\u0000\u047b\u047c\u0007\u0006\u0000\u0000\u047c1\u0001"+
52920 		"\u0000\u0000\u0000\u047d\u047e\u0003*\u0015\u0000\u047e3\u0001\u0000\u0000"+
52921 		"\u0000\u047f\u0480\u0003*\u0015\u0000\u04805\u0001\u0000\u0000\u0000\u0481"+
52922 		"\u0482\u0003L&\u0000\u0482\u0483\u0005\u0014\u0000\u0000\u0483\u0485\u0001"+
52923 		"\u0000\u0000\u0000\u0484\u0481\u0001\u0000\u0000\u0000\u0484\u0485\u0001"+
52924 		"\u0000\u0000\u0000\u0485\u0486\u0001\u0000\u0000\u0000\u0486\u0487\u0003"+
52925 		"N\'\u0000\u04877\u0001\u0000\u0000\u0000\u0488\u0489\u0003L&\u0000\u0489"+
52926 		"\u048a\u0005\u0014\u0000\u0000\u048a\u048c\u0001\u0000\u0000\u0000\u048b"+
52927 		"\u0488\u0001\u0000\u0000\u0000\u048b\u048c\u0001\u0000\u0000\u0000\u048c"+
52928 		"\u048d\u0001\u0000\u0000\u0000\u048d\u0490\u0003N\'\u0000\u048e\u048f"+
52929 		"\u0005+\u0000\u0000\u048f\u0491\u0003\u001e\u000f\u0000\u0490\u048e\u0001"+
52930 		"\u0000\u0000\u0000\u0490\u0491\u0001\u0000\u0000\u0000\u04919\u0001\u0000"+
52931 		"\u0000\u0000\u0492\u0493\u0003L&\u0000\u0493\u0494\u0005\u0014\u0000\u0000"+
52932 		"\u0494\u0496\u0001\u0000\u0000\u0000\u0495\u0492\u0001\u0000\u0000\u0000"+
52933 		"\u0495\u0496\u0001\u0000\u0000\u0000\u0496\u0497\u0001\u0000\u0000\u0000"+
52934 		"\u0497\u0498\u0003N\'\u0000\u0498;\u0001\u0000\u0000\u0000\u0499\u049a"+
52935 		"\u00034\u001a\u0000\u049a\u049b\u0005\u0014\u0000\u0000\u049b\u049d\u0001"+
52936 		"\u0000\u0000\u0000\u049c\u0499\u0001\u0000\u0000\u0000\u049c\u049d\u0001"+
52937 		"\u0000\u0000\u0000\u049d\u049e\u0001\u0000\u0000\u0000\u049e\u049f\u0003"+
52938 		"N\'\u0000\u049f=\u0001\u0000\u0000\u0000\u04a0\u04a1\u00034\u001a\u0000"+
52939 		"\u04a1\u04a2\u0005\u0014\u0000\u0000\u04a2\u04a4\u0001\u0000\u0000\u0000"+
52940 		"\u04a3\u04a0\u0001\u0000\u0000\u0000\u04a3\u04a4\u0001\u0000\u0000\u0000"+
52941 		"\u04a4\u04a5\u0001\u0000\u0000\u0000\u04a5\u04a6\u0003N\'\u0000\u04a6"+
52942 		"?\u0001\u0000\u0000\u0000\u04a7\u04a8\u00032\u0019\u0000\u04a8\u04ac\u0005"+
52943 		"\u0014\u0000\u0000\u04a9\u04aa\u0003L&\u0000\u04aa\u04ab\u0005\u0014\u0000"+
52944 		"\u0000\u04ab\u04ad\u0001\u0000\u0000\u0000\u04ac\u04a9\u0001\u0000\u0000"+
52945 		"\u0000\u04ac\u04ad\u0001\u0000\u0000\u0000\u04ad\u04b4\u0001\u0000\u0000"+
52946 		"\u0000\u04ae\u04af\u0003L&\u0000\u04af\u04b0\u0005\u0014\u0000\u0000\u04b0"+
52947 		"\u04b2\u0001\u0000\u0000\u0000\u04b1\u04ae\u0001\u0000\u0000\u0000\u04b1"+
52948 		"\u04b2\u0001\u0000\u0000\u0000\u04b2\u04b4\u0001\u0000\u0000\u0000\u04b3"+
52949 		"\u04a7\u0001\u0000\u0000\u0000\u04b3\u04b1\u0001\u0000\u0000\u0000\u04b4"+
52950 		"\u04b5\u0001\u0000\u0000\u0000\u04b5\u04b6\u0003N\'\u0000\u04b6A\u0001"+
52951 		"\u0000\u0000\u0000\u04b7\u04b8\u00034\u001a\u0000\u04b8\u04b9\u0005\u0014"+
52952 		"\u0000\u0000\u04b9\u04bb\u0001\u0000\u0000\u0000\u04ba\u04b7\u0001\u0000"+
52953 		"\u0000\u0000\u04ba\u04bb\u0001\u0000\u0000\u0000\u04bb\u04bc\u0001\u0000"+
52954 		"\u0000\u0000\u04bc\u04bd\u0003N\'\u0000\u04bdC\u0001\u0000\u0000\u0000"+
52955 		"\u04be\u04bf\u0003N\'\u0000\u04bfE\u0001\u0000\u0000\u0000\u04c0\u04c1"+
52956 		"\u0003N\'\u0000\u04c1G\u0001\u0000\u0000\u0000\u04c2\u04c3\u0003L&\u0000"+
52957 		"\u04c3\u04c4\u0005\u0014\u0000\u0000\u04c4\u04c6\u0001\u0000\u0000\u0000"+
52958 		"\u04c5\u04c2\u0001\u0000\u0000\u0000\u04c5\u04c6\u0001\u0000\u0000\u0000"+
52959 		"\u04c6\u04c9\u0001\u0000\u0000\u0000\u04c7\u04ca\u0003N\'\u0000\u04c8"+
52960 		"\u04ca\u0003J%\u0000\u04c9\u04c7\u0001\u0000\u0000\u0000\u04c9\u04c8\u0001"+
52961 		"\u0000\u0000\u0000\u04caI\u0001\u0000\u0000\u0000\u04cb\u04cc\u0005,\u0000"+
52962 		"\u0000\u04cc\u04cd\u0005\u001f\u0000\u0000\u04cd\u04ce\u0003N\'\u0000"+
52963 		"\u04ce\u04cf\u0005 \u0000\u0000\u04cfK\u0001\u0000\u0000\u0000\u04d0\u04d1"+
52964 		"\u0003*\u0015\u0000\u04d1M\u0001\u0000\u0000\u0000\u04d2\u04d3\u0003*"+
52965 		"\u0015\u0000\u04d3O\u0001\u0000\u0000\u0000\u04d4\u04d5\u0005\u001f\u0000"+
52966 		"\u0000\u04d5\u04da\u0003H$\u0000\u04d6\u04d7\u0005%\u0000\u0000\u04d7"+
52967 		"\u04d9\u0003H$\u0000\u04d8\u04d6\u0001\u0000\u0000\u0000\u04d9\u04dc\u0001"+
52968 		"\u0000\u0000\u0000\u04da\u04d8\u0001\u0000\u0000\u0000\u04da\u04db\u0001"+
52969 		"\u0000\u0000\u0000\u04db\u04dd\u0001\u0000\u0000\u0000\u04dc\u04da\u0001"+
52970 		"\u0000\u0000\u0000\u04dd\u04de\u0005 \u0000\u0000\u04deQ\u0001\u0000\u0000"+
52971 		"\u0000\u04df\u04e0\u0005\u001f\u0000\u0000\u04e0\u04e5\u0003\u00b0X\u0000"+
52972 		"\u04e1\u04e2\u0005%\u0000\u0000\u04e2\u04e4\u0003\u00b0X\u0000\u04e3\u04e1"+
52973 		"\u0001\u0000\u0000\u0000\u04e4\u04e7\u0001\u0000\u0000\u0000\u04e5\u04e3"+
52974 		"\u0001\u0000\u0000\u0000\u04e5\u04e6\u0001\u0000\u0000\u0000\u04e6\u04e8"+
52975 		"\u0001\u0000\u0000\u0000\u04e7\u04e5\u0001\u0000\u0000\u0000\u04e8\u04e9"+
52976 		"\u0005 \u0000\u0000\u04e9S\u0001\u0000\u0000\u0000\u04ea\u04ec\u0005\u001f"+
52977 		"\u0000\u0000\u04eb\u04ea\u0001\u0000\u0000\u0000\u04eb\u04ec\u0001\u0000"+
52978 		"\u0000\u0000\u04ec\u04ed\u0001\u0000\u0000\u0000\u04ed\u04f2\u0003@ \u0000"+
52979 		"\u04ee\u04ef\u0005%\u0000\u0000\u04ef\u04f1\u0003@ \u0000\u04f0\u04ee"+
52980 		"\u0001\u0000\u0000\u0000\u04f1\u04f4\u0001\u0000\u0000\u0000\u04f2\u04f0"+
52981 		"\u0001\u0000\u0000\u0000\u04f2\u04f3\u0001\u0000\u0000\u0000\u04f3\u04f6"+
52982 		"\u0001\u0000\u0000\u0000\u04f4\u04f2\u0001\u0000\u0000\u0000\u04f5\u04f7"+
52983 		"\u0005 \u0000\u0000\u04f6\u04f5\u0001\u0000\u0000\u0000\u04f6\u04f7\u0001"+
52984 		"\u0000\u0000\u0000\u04f7U\u0001\u0000\u0000\u0000\u04f8\u04f9\u0003*\u0015"+
52985 		"\u0000\u04f9W\u0001\u0000\u0000\u0000\u04fa\u04fb\u0003*\u0015\u0000\u04fb"+
52986 		"Y\u0001\u0000\u0000\u0000\u04fc\u04fd\u0007\u0007\u0000\u0000\u04fd[\u0001"+
52987 		"\u0000\u0000\u0000\u04fe\u0501\u0003*\u0015\u0000\u04ff\u0501\u0005\u02ae"+
52988 		"\u0000\u0000\u0500\u04fe\u0001\u0000\u0000\u0000\u0500\u04ff\u0001\u0000"+
52989 		"\u0000\u0000\u0501]\u0001\u0000\u0000\u0000\u0502\u0508\u0005\u001f\u0000"+
52990 		"\u0000\u0503\u0506\u0005\u02af\u0000\u0000\u0504\u0505\u0005%\u0000\u0000"+
52991 		"\u0505\u0507\u0005\u02af\u0000\u0000\u0506\u0504\u0001\u0000\u0000\u0000"+
52992 		"\u0506\u0507\u0001\u0000\u0000\u0000\u0507\u0509\u0001\u0000\u0000\u0000"+
52993 		"\u0508\u0503\u0001\u0000\u0000\u0000\u0508\u0509\u0001\u0000\u0000\u0000"+
52994 		"\u0509\u050a\u0001\u0000\u0000\u0000\u050a\u050b\u0005 \u0000\u0000\u050b"+
52995 		"_\u0001\u0000\u0000\u0000\u050c\u050e\u0005?\u0000\u0000\u050d\u050c\u0001"+
52996 		"\u0000\u0000\u0000\u050d\u050e\u0001\u0000\u0000\u0000\u050e\u050f\u0001"+
52997 		"\u0000\u0000\u0000\u050f\u0510\u0005B\u0000\u0000\u0510a\u0001\u0000\u0000"+
52998 		"\u0000\u0511\u0512\u00061\uffff\uffff\u0000\u0512\u0513\u0003h4\u0000"+
52999 		"\u0513\u0514\u0003b1\u0003\u0514\u051b\u0001\u0000\u0000\u0000\u0515\u0516"+
53000 		"\u0005\u001f\u0000\u0000\u0516\u0517\u0003b1\u0000\u0517\u0518\u0005 "+
53001 		"\u0000\u0000\u0518\u051b\u0001\u0000\u0000\u0000\u0519\u051b\u0003j5\u0000"+
53002 		"\u051a\u0511\u0001\u0000\u0000\u0000\u051a\u0515\u0001\u0000\u0000\u0000"+
53003 		"\u051a\u0519\u0001\u0000\u0000\u0000\u051b\u0526\u0001\u0000\u0000\u0000"+
53004 		"\u051c\u051d\n\u0005\u0000\u0000\u051d\u051e\u0003d2\u0000\u051e\u051f"+
53005 		"\u0003b1\u0006\u051f\u0525\u0001\u0000\u0000\u0000\u0520\u0521\n\u0004"+
53006 		"\u0000\u0000\u0521\u0522\u0003f3\u0000\u0522\u0523\u0003b1\u0005\u0523"+
53007 		"\u0525\u0001\u0000\u0000\u0000\u0524\u051c\u0001\u0000\u0000\u0000\u0524"+
53008 		"\u0520\u0001\u0000\u0000\u0000\u0525\u0528\u0001\u0000\u0000\u0000\u0526"+
53009 		"\u0524\u0001\u0000\u0000\u0000\u0526\u0527\u0001\u0000\u0000\u0000\u0527"+
53010 		"c\u0001\u0000\u0000\u0000\u0528\u0526\u0001\u0000\u0000\u0000\u0529\u052a"+
53011 		"\u0007\b\u0000\u0000\u052ae\u0001\u0000\u0000\u0000\u052b\u052c\u0007"+
53012 		"\t\u0000\u0000\u052cg\u0001\u0000\u0000\u0000\u052d\u052e\u0007\n\u0000"+
53013 		"\u0000\u052ei\u0001\u0000\u0000\u0000\u052f\u0530\u00065\uffff\uffff\u0000"+
53014 		"\u0530\u0531\u0003n7\u0000\u0531\u0546\u0001\u0000\u0000\u0000\u0532\u0533"+
53015 		"\n\u0005\u0000\u0000\u0533\u0535\u0005h\u0000\u0000\u0534\u0536\u0005"+
53016 		"i\u0000\u0000\u0535\u0534\u0001\u0000\u0000\u0000\u0535\u0536\u0001\u0000"+
53017 		"\u0000\u0000\u0536\u0537\u0001\u0000\u0000\u0000\u0537\u0545\u0007\u000b"+
53018 		"\u0000\u0000\u0538\u0539\n\u0004\u0000\u0000\u0539\u053a\u0005\u0016\u0000"+
53019 		"\u0000\u053a\u0545\u0003n7\u0000\u053b\u053c\n\u0003\u0000\u0000\u053c"+
53020 		"\u053d\u0003l6\u0000\u053d\u053e\u0003n7\u0000\u053e\u0545\u0001\u0000"+
53021 		"\u0000\u0000\u053f\u0540\n\u0002\u0000\u0000\u0540\u0541\u0003l6\u0000"+
53022 		"\u0541\u0542\u0007\f\u0000\u0000\u0542\u0543\u0003\u02d4\u016a\u0000\u0543"+
53023 		"\u0545\u0001\u0000\u0000\u0000\u0544\u0532\u0001\u0000\u0000\u0000\u0544"+
53024 		"\u0538\u0001\u0000\u0000\u0000\u0544\u053b\u0001\u0000\u0000\u0000\u0544"+
53025 		"\u053f\u0001\u0000\u0000\u0000\u0545\u0548\u0001\u0000\u0000\u0000\u0546"+
53026 		"\u0544\u0001\u0000\u0000\u0000\u0546\u0547\u0001\u0000\u0000\u0000\u0547"+
53027 		"k\u0001\u0000\u0000\u0000\u0548\u0546\u0001\u0000\u0000\u0000\u0549\u054a"+
53028 		"\u0007\r\u0000\u0000\u054am\u0001\u0000\u0000\u0000\u054b\u054d\u0003"+
53029 		"p8\u0000\u054c\u054e\u0005i\u0000\u0000\u054d\u054c\u0001\u0000\u0000"+
53030 		"\u0000\u054d\u054e\u0001\u0000\u0000\u0000\u054e\u054f\u0001\u0000\u0000"+
53031 		"\u0000\u054f\u0550\u0005o\u0000\u0000\u0550\u0551\u0003\u02d4\u016a\u0000"+
53032 		"\u0551\u0577\u0001\u0000\u0000\u0000\u0552\u0554\u0003p8\u0000\u0553\u0555"+
53033 		"\u0005i\u0000\u0000\u0554\u0553\u0001\u0000\u0000\u0000\u0554\u0555\u0001"+
53034 		"\u0000\u0000\u0000\u0555\u0556\u0001\u0000\u0000\u0000\u0556\u0557\u0005"+
53035 		"o\u0000\u0000\u0557\u0558\u0005\u001f\u0000\u0000\u0558\u055d\u0003b1"+
53036 		"\u0000\u0559\u055a\u0005%";
53037 	private static final String _serializedATNSegment1 =
53038 		"\u0000\u0000\u055a\u055c\u0003b1\u0000\u055b\u0559\u0001\u0000\u0000\u0000"+
53039 		"\u055c\u055f\u0001\u0000\u0000\u0000\u055d\u055b\u0001\u0000\u0000\u0000"+
53040 		"\u055d\u055e\u0001\u0000\u0000\u0000\u055e\u0560\u0001\u0000\u0000\u0000"+
53041 		"\u055f\u055d\u0001\u0000\u0000\u0000\u0560\u0561\u0005 \u0000\u0000\u0561"+
53042 		"\u0577\u0001\u0000\u0000\u0000\u0562\u0564\u0003p8\u0000\u0563\u0565\u0005"+
53043 		"i\u0000\u0000\u0564\u0563\u0001\u0000\u0000\u0000\u0564\u0565\u0001\u0000"+
53044 		"\u0000\u0000\u0565\u0566\u0001\u0000\u0000\u0000\u0566\u0567\u0005n\u0000"+
53045 		"\u0000\u0567\u0568\u0003p8\u0000\u0568\u0569\u0005f\u0000\u0000\u0569"+
53046 		"\u056a\u0003n7\u0000\u056a\u0577\u0001\u0000\u0000\u0000\u056b\u056d\u0003"+
53047 		"p8\u0000\u056c\u056e\u0005i\u0000\u0000\u056d\u056c\u0001\u0000\u0000"+
53048 		"\u0000\u056d\u056e\u0001\u0000\u0000\u0000\u056e\u056f\u0001\u0000\u0000"+
53049 		"\u0000\u056f\u0570\u0005r\u0000\u0000\u0570\u0573\u0003r9\u0000\u0571"+
53050 		"\u0572\u0005\u00d7\u0000\u0000\u0572\u0574\u0003r9\u0000\u0573\u0571\u0001"+
53051 		"\u0000\u0000\u0000\u0573\u0574\u0001\u0000\u0000\u0000\u0574\u0577\u0001"+
53052 		"\u0000\u0000\u0000\u0575\u0577\u0003p8\u0000\u0576\u054b\u0001\u0000\u0000"+
53053 		"\u0000\u0576\u0552\u0001\u0000\u0000\u0000\u0576\u0562\u0001\u0000\u0000"+
53054 		"\u0000\u0576\u056b\u0001\u0000\u0000\u0000\u0576\u0575\u0001\u0000\u0000"+
53055 		"\u0000\u0577o\u0001\u0000\u0000\u0000\u0578\u0579\u00068\uffff\uffff\u0000"+
53056 		"\u0579\u057a\u0003r9\u0000\u057a\u059b\u0001\u0000\u0000\u0000\u057b\u057c"+
53057 		"\n\u000b\u0000\u0000\u057c\u057d\u0005\b\u0000\u0000\u057d\u059a\u0003"+
53058 		"p8\f\u057e\u057f\n\n\u0000\u0000\u057f\u0580\u0005\t\u0000\u0000\u0580"+
53059 		"\u059a\u0003p8\u000b\u0581\u0582\n\t\u0000\u0000\u0582\u0583\u0005\n\u0000"+
53060 		"\u0000\u0583\u059a\u0003p8\n\u0584\u0585\n\b\u0000\u0000\u0585\u0586\u0005"+
53061 		"\u000b\u0000\u0000\u0586\u059a\u0003p8\t\u0587\u0588\n\u0007\u0000\u0000"+
53062 		"\u0588\u0589\u0005\u000f\u0000\u0000\u0589\u059a\u0003p8\b\u058a\u058b"+
53063 		"\n\u0006\u0000\u0000\u058b\u058c\u0005\u0010\u0000\u0000\u058c\u059a\u0003"+
53064 		"p8\u0007\u058d\u058e\n\u0005\u0000\u0000\u058e\u058f\u0005\u0011\u0000"+
53065 		"\u0000\u058f\u059a\u0003p8\u0006\u0590\u0591\n\u0004\u0000\u0000\u0591"+
53066 		"\u0592\u0005\u0012\u0000\u0000\u0592\u059a\u0003p8\u0005\u0593\u0594\n"+
53067 		"\u0003\u0000\u0000\u0594\u0595\u0005\r\u0000\u0000\u0595\u059a\u0003p"+
53068 		"8\u0004\u0596\u0597\n\u0002\u0000\u0000\u0597\u0598\u0005\f\u0000\u0000"+
53069 		"\u0598\u059a\u0003p8\u0003\u0599\u057b\u0001\u0000\u0000\u0000\u0599\u057e"+
53070 		"\u0001\u0000\u0000\u0000\u0599\u0581\u0001\u0000\u0000\u0000\u0599\u0584"+
53071 		"\u0001\u0000\u0000\u0000\u0599\u0587\u0001\u0000\u0000\u0000\u0599\u058a"+
53072 		"\u0001\u0000\u0000\u0000\u0599\u058d\u0001\u0000\u0000\u0000\u0599\u0590"+
53073 		"\u0001\u0000\u0000\u0000\u0599\u0593\u0001\u0000\u0000\u0000\u0599\u0596"+
53074 		"\u0001\u0000\u0000\u0000\u059a\u059d\u0001\u0000\u0000\u0000\u059b\u0599"+
53075 		"\u0001\u0000\u0000\u0000\u059b\u059c\u0001\u0000\u0000\u0000\u059cq\u0001"+
53076 		"\u0000\u0000\u0000\u059d\u059b\u0001\u0000\u0000\u0000\u059e\u059f\u0006"+
53077 		"9\uffff\uffff\u0000\u059f\u05c0\u0003t:\u0000\u05a0\u05c0\u0003\u0018"+
53078 		"\f\u0000\u05a1\u05c0\u0003\u001a\r\u0000\u05a2\u05c0\u0003H$\u0000\u05a3"+
53079 		"\u05c0\u0003\u00d0h\u0000\u05a4\u05a5\u0007\u000e\u0000\u0000\u05a5\u05c0"+
53080 		"\u0003r9\u0006\u05a6\u05a8\u0005\u00dd\u0000\u0000\u05a7\u05a6\u0001\u0000"+
53081 		"\u0000\u0000\u05a7\u05a8\u0001\u0000\u0000\u0000\u05a8\u05a9\u0001\u0000"+
53082 		"\u0000\u0000\u05a9\u05aa\u0005\u001f\u0000\u0000\u05aa\u05af\u0003b1\u0000"+
53083 		"\u05ab\u05ac\u0005%\u0000\u0000\u05ac\u05ae\u0003b1\u0000\u05ad\u05ab"+
53084 		"\u0001\u0000\u0000\u0000\u05ae\u05b1\u0001\u0000\u0000\u0000\u05af\u05ad"+
53085 		"\u0001\u0000\u0000\u0000\u05af\u05b0\u0001\u0000\u0000\u0000\u05b0\u05b2"+
53086 		"\u0001\u0000\u0000\u0000\u05b1\u05af\u0001\u0000\u0000\u0000\u05b2\u05b3"+
53087 		"\u0005 \u0000\u0000\u05b3\u05c0\u0001\u0000\u0000\u0000\u05b4\u05b6\u0005"+
53088 		"m\u0000\u0000\u05b5\u05b4\u0001\u0000\u0000\u0000\u05b5\u05b6\u0001\u0000"+
53089 		"\u0000\u0000\u05b6\u05b7\u0001\u0000\u0000\u0000\u05b7\u05c0\u0003\u02d4"+
53090 		"\u016a\u0000\u05b8\u05b9\u0005!\u0000\u0000\u05b9\u05ba\u0003*\u0015\u0000"+
53091 		"\u05ba\u05bb\u0003b1\u0000\u05bb\u05bc\u0005\"\u0000\u0000\u05bc\u05c0"+
53092 		"\u0001\u0000\u0000\u0000\u05bd\u05c0\u0003\u0088D\u0000\u05be\u05c0\u0003"+
53093 		"\u008eG\u0000\u05bf\u059e\u0001\u0000\u0000\u0000\u05bf\u05a0\u0001\u0000"+
53094 		"\u0000\u0000\u05bf\u05a1\u0001\u0000\u0000\u0000\u05bf\u05a2\u0001\u0000"+
53095 		"\u0000\u0000\u05bf\u05a3\u0001\u0000\u0000\u0000\u05bf\u05a4\u0001\u0000"+
53096 		"\u0000\u0000\u05bf\u05a7\u0001\u0000\u0000\u0000\u05bf\u05b5\u0001\u0000"+
53097 		"\u0000\u0000\u05bf\u05b8\u0001\u0000\u0000\u0000\u05bf\u05bd\u0001\u0000"+
53098 		"\u0000\u0000\u05bf\u05be\u0001\u0000\u0000\u0000\u05c0\u05c6\u0001\u0000"+
53099 		"\u0000\u0000\u05c1\u05c2\n\u0007\u0000\u0000\u05c2\u05c3\u0005\u0005\u0000"+
53100 		"\u0000\u05c3\u05c5\u0003r9\b\u05c4\u05c1\u0001\u0000\u0000\u0000\u05c5"+
53101 		"\u05c8\u0001\u0000\u0000\u0000\u05c6\u05c4\u0001\u0000\u0000\u0000\u05c6"+
53102 		"\u05c7\u0001\u0000\u0000\u0000\u05c7s\u0001\u0000\u0000\u0000\u05c8\u05c6"+
53103 		"\u0001\u0000\u0000\u0000\u05c9\u05cd\u0003v;\u0000\u05ca\u05cd\u0003|"+
53104 		">\u0000\u05cb\u05cd\u0003\u0084B\u0000\u05cc\u05c9\u0001\u0000\u0000\u0000"+
53105 		"\u05cc\u05ca\u0001\u0000\u0000\u0000\u05cc\u05cb\u0001\u0000\u0000\u0000"+
53106 		"\u05cdu\u0001\u0000\u0000\u0000\u05ce\u05cf\u0003x<\u0000\u05cf\u05d1"+
53107 		"\u0005\u001f\u0000\u0000\u05d0\u05d2\u0003z=\u0000\u05d1\u05d0\u0001\u0000"+
53108 		"\u0000\u0000\u05d1\u05d2\u0001\u0000\u0000\u0000\u05d2\u05dc\u0001\u0000"+
53109 		"\u0000\u0000\u05d3\u05d8\u0003b1\u0000\u05d4\u05d5\u0005%\u0000\u0000"+
53110 		"\u05d5\u05d7\u0003b1\u0000\u05d6\u05d4\u0001\u0000\u0000\u0000\u05d7\u05da"+
53111 		"\u0001\u0000\u0000\u0000\u05d8\u05d6\u0001\u0000\u0000\u0000\u05d8\u05d9"+
53112 		"\u0001\u0000\u0000\u0000\u05d9\u05dd\u0001\u0000\u0000\u0000\u05da\u05d8"+
53113 		"\u0001\u0000\u0000\u0000\u05db\u05dd\u0005\u0011\u0000\u0000\u05dc\u05d3"+
53114 		"\u0001\u0000\u0000\u0000\u05dc\u05db\u0001\u0000\u0000\u0000\u05dc\u05dd"+
53115 		"\u0001\u0000\u0000\u0000\u05dd\u05de\u0001\u0000\u0000\u0000\u05de\u05df"+
53116 		"\u0005 \u0000\u0000\u05dfw\u0001\u0000\u0000\u0000\u05e0\u05e1\u0007\u000f"+
53117 		"\u0000\u0000\u05e1y\u0001\u0000\u0000\u0000\u05e2\u05e3\u0005N\u0000\u0000"+
53118 		"\u05e3{\u0001\u0000\u0000\u0000\u05e4\u05e8\u0003~?\u0000\u05e5\u05e8"+
53119 		"\u0003\u0082A\u0000\u05e6\u05e8\u0003\u0080@\u0000\u05e7\u05e4\u0001\u0000"+
53120 		"\u0000\u0000\u05e7\u05e5\u0001\u0000\u0000\u0000\u05e7\u05e6\u0001\u0000"+
53121 		"\u0000\u0000\u05e8}\u0001\u0000\u0000\u0000\u05e9\u05ea\u0005Q\u0000\u0000"+
53122 		"\u05ea\u05eb\u0005\u001f\u0000\u0000\u05eb\u05ec\u0003b1\u0000\u05ec\u05ed"+
53123 		"\u0005_\u0000\u0000\u05ed\u05ee\u0003\u0094J\u0000\u05ee\u05ef\u0005 "+
53124 		"\u0000\u0000\u05ef\u007f\u0001\u0000\u0000\u0000\u05f0\u05f1\u0005\u00f6"+
53125 		"\u0000\u0000\u05f1\u05f2\u0005\u001f\u0000\u0000\u05f2\u05f3\u0003\u0094"+
53126 		"J\u0000\u05f3\u05f4\u0005%\u0000\u0000\u05f4\u05f7\u0003b1\u0000\u05f5"+
53127 		"\u05f6\u0005%\u0000\u0000\u05f6\u05f8\u0005\u02af\u0000\u0000\u05f7\u05f5"+
53128 		"\u0001\u0000\u0000\u0000\u05f7\u05f8\u0001\u0000\u0000\u0000\u05f8\u05f9"+
53129 		"\u0001\u0000\u0000\u0000\u05f9\u05fa\u0005 \u0000\u0000\u05fa\u0081\u0001"+
53130 		"\u0000\u0000\u0000\u05fb\u05fc\u0005\u0081\u0000\u0000\u05fc\u05fd\u0005"+
53131 		"\u001f\u0000\u0000\u05fd\u0602\u0003b1\u0000\u05fe\u05ff\u0005%\u0000"+
53132 		"\u0000\u05ff\u0601\u0003b1\u0000\u0600\u05fe\u0001\u0000\u0000\u0000\u0601"+
53133 		"\u0604\u0001\u0000\u0000\u0000\u0602\u0600\u0001\u0000\u0000\u0000\u0602"+
53134 		"\u0603\u0001\u0000\u0000\u0000\u0603\u0607\u0001\u0000\u0000\u0000\u0604"+
53135 		"\u0602\u0001\u0000\u0000\u0000\u0605\u0606\u0005]\u0000\u0000\u0606\u0608"+
53136 		"\u0003\u00cae\u0000\u0607\u0605\u0001\u0000\u0000\u0000\u0607\u0608\u0001"+
53137 		"\u0000\u0000\u0000\u0608\u0609\u0001\u0000\u0000\u0000\u0609\u060a\u0005"+
53138 		" \u0000\u0000\u060a\u0083\u0001\u0000\u0000\u0000\u060b\u060c\u0003\u0086"+
53139 		"C\u0000\u060c\u0616\u0005\u001f\u0000\u0000\u060d\u0612\u0003b1\u0000"+
53140 		"\u060e\u060f\u0005%\u0000\u0000\u060f\u0611\u0003b1\u0000\u0610\u060e"+
53141 		"\u0001\u0000\u0000\u0000\u0611\u0614\u0001\u0000\u0000\u0000\u0612\u0610"+
53142 		"\u0001\u0000\u0000\u0000\u0612\u0613\u0001\u0000\u0000\u0000\u0613\u0617"+
53143 		"\u0001\u0000\u0000\u0000\u0614\u0612\u0001\u0000\u0000\u0000\u0615\u0617"+
53144 		"\u0005\u0011\u0000\u0000\u0616\u060d\u0001\u0000\u0000\u0000\u0616\u0615"+
53145 		"\u0001\u0000\u0000\u0000\u0616\u0617\u0001\u0000\u0000\u0000\u0617\u0618"+
53146 		"\u0001\u0000\u0000\u0000\u0618\u0619\u0005 \u0000\u0000\u0619\u0085\u0001"+
53147 		"\u0000\u0000\u0000\u061a\u061b\u0003L&\u0000\u061b\u061c\u0005\u0014\u0000"+
53148 		"\u0000\u061c\u061e\u0001\u0000\u0000\u0000\u061d\u061a\u0001\u0000\u0000"+
53149 		"\u0000\u061d\u061e\u0001\u0000\u0000\u0000\u061e\u061f\u0001\u0000\u0000"+
53150 		"\u0000\u061f\u0625\u0003*\u0015\u0000\u0620\u0625\u0005a\u0000\u0000\u0621"+
53151 		"\u0625\u0005\u0088\u0000\u0000\u0622\u0625\u0005\u0089\u0000\u0000\u0623"+
53152 		"\u0625\u0005\u0084\u0000\u0000\u0624\u061d\u0001\u0000\u0000\u0000\u0624"+
53153 		"\u0620\u0001\u0000\u0000\u0000\u0624\u0621\u0001\u0000\u0000\u0000\u0624"+
53154 		"\u0622\u0001\u0000\u0000\u0000\u0624\u0623\u0001\u0000\u0000\u0000\u0625"+
53155 		"\u0087\u0001\u0000\u0000\u0000\u0626\u0628\u0005O\u0000\u0000\u0627\u0629"+
53156 		"\u0003r9\u0000\u0628\u0627\u0001\u0000\u0000\u0000\u0628\u0629\u0001\u0000"+
53157 		"\u0000\u0000\u0629\u062b\u0001\u0000\u0000\u0000\u062a\u062c\u0003\u008a"+
53158 		"E\u0000\u062b\u062a\u0001\u0000\u0000\u0000\u062c\u062d\u0001\u0000\u0000"+
53159 		"\u0000\u062d\u062b\u0001\u0000\u0000\u0000\u062d\u062e\u0001\u0000\u0000"+
53160 		"\u0000\u062e\u0630\u0001\u0000\u0000\u0000\u062f\u0631\u0003\u008cF\u0000"+
53161 		"\u0630\u062f\u0001\u0000\u0000\u0000\u0630\u0631\u0001\u0000\u0000\u0000"+
53162 		"\u0631\u0632\u0001\u0000\u0000\u0000\u0632\u0633\u0005\u0102\u0000\u0000"+
53163 		"\u0633\u0089\u0001\u0000\u0000\u0000\u0634\u0635\u0005P\u0000\u0000\u0635"+
53164 		"\u0636\u0003b1\u0000\u0636\u0637\u0005c\u0000\u0000\u0637\u0638\u0003"+
53165 		"b1\u0000\u0638\u008b\u0001\u0000\u0000\u0000\u0639\u063a\u0005b\u0000"+
53166 		"\u0000\u063a\u063b\u0003b1\u0000\u063b\u008d\u0001\u0000\u0000\u0000\u063c"+
53167 		"\u0641\u0003\u009eO\u0000\u063d\u0641\u0003\u0098L\u0000\u063e\u0641\u0003"+
53168 		"\u009aM\u0000\u063f\u0641\u0003\u009cN\u0000\u0640\u063c\u0001\u0000\u0000"+
53169 		"\u0000\u0640\u063d\u0001\u0000\u0000\u0000\u0640\u063e\u0001\u0000\u0000"+
53170 		"\u0000\u0640\u063f\u0001\u0000\u0000\u0000\u0641\u008f\u0001\u0000\u0000"+
53171 		"\u0000\u0642\u0643\u0005s\u0000\u0000\u0643\u0644\u0005u\u0000\u0000\u0644"+
53172 		"\u0649\u0003\u0092I\u0000\u0645\u0646\u0005%\u0000\u0000\u0646\u0648\u0003"+
53173 		"\u0092I\u0000\u0647\u0645\u0001\u0000\u0000\u0000\u0648\u064b\u0001\u0000"+
53174 		"\u0000\u0000\u0649\u0647\u0001\u0000\u0000\u0000\u0649\u064a\u0001\u0000"+
53175 		"\u0000\u0000\u064a\u0657\u0001\u0000\u0000\u0000\u064b\u0649\u0001\u0000"+
53176 		"\u0000\u0000\u064c\u064d\u0005z\u0000\u0000\u064d\u064e\u0003b1\u0000"+
53177 		"\u064e\u0655\u0007\u0010\u0000\u0000\u064f\u0650\u0005\u01a4\u0000\u0000"+
53178 		"\u0650\u0651\u0007\u0011\u0000\u0000\u0651\u0652\u0003b1\u0000\u0652\u0653"+
53179 		"\u0007\u0010\u0000\u0000\u0653\u0654\u0005\u01a6\u0000\u0000\u0654\u0656"+
53180 		"\u0001\u0000\u0000\u0000\u0655\u064f\u0001\u0000\u0000\u0000\u0655\u0656"+
53181 		"\u0001\u0000\u0000\u0000\u0656\u0658\u0001\u0000\u0000\u0000\u0657\u064c"+
53182 		"\u0001\u0000\u0000\u0000\u0657\u0658\u0001\u0000\u0000\u0000\u0658\u0091"+
53183 		"\u0001\u0000\u0000\u0000\u0659\u065d\u0003H$\u0000\u065a\u065d\u0003\u001e"+
53184 		"\u000f\u0000\u065b\u065d\u0003b1\u0000\u065c\u0659\u0001\u0000\u0000\u0000"+
53185 		"\u065c\u065a\u0001\u0000\u0000\u0000\u065c\u065b\u0001\u0000\u0000\u0000"+
53186 		"\u065d\u0660\u0001\u0000\u0000\u0000\u065e\u065f\u0005\u00f3\u0000\u0000"+
53187 		"\u065f\u0661\u0003*\u0015\u0000\u0660\u065e\u0001\u0000\u0000\u0000\u0660"+
53188 		"\u0661\u0001\u0000\u0000\u0000\u0661\u0663\u0001\u0000\u0000\u0000\u0662"+
53189 		"\u0664\u0007\u0012\u0000\u0000\u0663\u0662\u0001\u0000\u0000\u0000\u0663"+
53190 		"\u0664\u0001\u0000\u0000\u0000\u0664\u0093\u0001\u0000\u0000\u0000\u0665"+
53191 		"\u0666\u0003\u00cae\u0000\u0666\u0667\u0005\u0014\u0000\u0000\u0667\u0669"+
53192 		"\u0001\u0000\u0000\u0000\u0668\u0665\u0001\u0000\u0000\u0000\u0668\u0669"+
53193 		"\u0001\u0000\u0000\u0000\u0669\u066a\u0001\u0000\u0000\u0000\u066a\u0676"+
53194 		"\u0003\u0096K\u0000\u066b\u0677\u0003^/\u0000\u066c\u066d\u0005\u001f"+
53195 		"\u0000\u0000\u066d\u066e\u0005\u0093\u0000\u0000\u066e\u0677\u0005 \u0000"+
53196 		"\u0000\u066f\u0671\u0005\u001f\u0000\u0000\u0670\u0672\u0007\u0013\u0000"+
53197 		"\u0000\u0671\u0670\u0001\u0000\u0000\u0000\u0671\u0672\u0001\u0000\u0000"+
53198 		"\u0000\u0672\u0673\u0001\u0000\u0000\u0000\u0673\u0674\u0003\u00cae\u0000"+
53199 		"\u0674\u0675\u0005 \u0000\u0000\u0675\u0677\u0001\u0000\u0000\u0000\u0676"+
53200 		"\u066b\u0001\u0000\u0000\u0000\u0676\u066c\u0001\u0000\u0000\u0000\u0676"+
53201 		"\u066f\u0001\u0000\u0000\u0000\u0676\u0677\u0001\u0000\u0000\u0000\u0677"+
53202 		"\u0095\u0001\u0000\u0000\u0000\u0678\u0679\u0007\u0014\u0000\u0000\u0679"+
53203 		"\u0097\u0001\u0000\u0000\u0000\u067a\u067e\u0005\u02ac\u0000\u0000\u067b"+
53204 		"\u067c\u0005L\u0000\u0000\u067c\u067d\u0005\u0086\u0000\u0000\u067d\u067f"+
53205 		"\u0005\u012a\u0000\u0000\u067e\u067b\u0001\u0000\u0000\u0000\u067e\u067f"+
53206 		"\u0001\u0000\u0000\u0000\u067f\u0680\u0001\u0000\u0000\u0000\u0680\u0681"+
53207 		"\u0005\u02ae\u0000\u0000\u0681\u0099\u0001\u0000\u0000\u0000\u0682\u0683"+
53208 		"\u0005Q\u0000\u0000\u0683\u0684\u0005\u001f\u0000\u0000\u0684\u0685\u0003"+
53209 		"b1\u0000\u0685\u0686\u0005_\u0000\u0000\u0686\u068a\u0003\u0094J\u0000"+
53210 		"\u0687\u0688\u0005\u001f\u0000\u0000\u0688\u0689\u0005\u02af\u0000\u0000"+
53211 		"\u0689\u068b\u0005 \u0000\u0000\u068a\u0687\u0001\u0000\u0000\u0000\u068a"+
53212 		"\u068b\u0001\u0000\u0000\u0000\u068b\u068c\u0001\u0000\u0000\u0000\u068c"+
53213 		"\u068d\u0005 \u0000\u0000\u068d\u009b\u0001\u0000\u0000\u0000\u068e\u068f"+
53214 		"\u0005\u00f6\u0000\u0000\u068f\u0693\u0003\u0094J\u0000\u0690\u0691\u0005"+
53215 		"\u001f\u0000\u0000\u0691\u0692\u0005\u02af\u0000\u0000\u0692\u0694\u0005"+
53216 		" \u0000\u0000\u0693\u0690\u0001\u0000\u0000\u0000\u0693\u0694\u0001\u0000"+
53217 		"\u0000\u0000\u0694\u0695\u0001\u0000\u0000\u0000\u0695\u0696\u0005%\u0000"+
53218 		"\u0000\u0696\u0699\u0003b1\u0000\u0697\u0698\u0005%\u0000\u0000\u0698"+
53219 		"\u069a\u0005\u02af\u0000\u0000\u0699\u0697\u0001\u0000\u0000\u0000\u0699"+
53220 		"\u069a\u0001\u0000\u0000\u0000\u069a\u009d\u0001\u0000\u0000\u0000\u069b"+
53221 		"\u069c\u0003t:\u0000\u069c\u069d\u0003\u00a0P\u0000\u069d\u009f\u0001"+
53222 		"\u0000\u0000\u0000\u069e\u069f\u0005\u0117\u0000\u0000\u069f\u06a1\u0005"+
53223 		"\u001f\u0000\u0000\u06a0\u06a2\u0003\u00a2Q\u0000\u06a1\u06a0\u0001\u0000"+
53224 		"\u0000\u0000\u06a1\u06a2\u0001\u0000\u0000\u0000\u06a2\u06a4\u0001\u0000"+
53225 		"\u0000\u0000\u06a3\u06a5\u0003\u0090H\u0000\u06a4\u06a3\u0001\u0000\u0000"+
53226 		"\u0000\u06a4\u06a5\u0001\u0000\u0000\u0000\u06a5\u06a7\u0001\u0000\u0000"+
53227 		"\u0000\u06a6\u06a8\u0003\u00a4R\u0000\u06a7\u06a6\u0001\u0000\u0000\u0000"+
53228 		"\u06a7\u06a8\u0001\u0000\u0000\u0000\u06a8\u06a9\u0001\u0000\u0000\u0000"+
53229 		"\u06a9\u06aa\u0005 \u0000\u0000\u06aa\u00a1\u0001\u0000\u0000\u0000\u06ab"+
53230 		"\u06ac\u0005\u00da\u0000\u0000\u06ac\u06ad\u0005u\u0000\u0000\u06ad\u06b2"+
53231 		"\u0003b1\u0000\u06ae\u06af\u0005%\u0000\u0000\u06af\u06b1\u0003b1\u0000"+
53232 		"\u06b0\u06ae\u0001\u0000\u0000\u0000\u06b1\u06b4\u0001\u0000\u0000\u0000"+
53233 		"\u06b2\u06b0\u0001\u0000\u0000\u0000\u06b2\u06b3\u0001\u0000\u0000\u0000"+
53234 		"\u06b3\u00a3\u0001\u0000\u0000\u0000\u06b4\u06b2\u0001\u0000\u0000\u0000"+
53235 		"\u06b5\u06b6\u0007\u0015\u0000\u0000\u06b6\u06b7\u0003\u00a6S\u0000\u06b7"+
53236 		"\u00a5\u0001\u0000\u0000\u0000\u06b8\u06bb\u0003\u00acV\u0000\u06b9\u06bb"+
53237 		"\u0003\u00a8T\u0000\u06ba\u06b8\u0001\u0000\u0000\u0000\u06ba\u06b9\u0001"+
53238 		"\u0000\u0000\u0000\u06bb\u00a7\u0001\u0000\u0000\u0000\u06bc\u06bd\u0005"+
53239 		"n\u0000\u0000\u06bd\u06be\u0003\u00aaU\u0000\u06be\u06bf\u0005f\u0000"+
53240 		"\u0000\u06bf\u06c0\u0003\u00aaU\u0000\u06c0\u00a9\u0001\u0000\u0000\u0000"+
53241 		"\u06c1\u06c4\u0003\u00acV\u0000\u06c2\u06c4\u0003\u00aeW\u0000\u06c3\u06c1"+
53242 		"\u0001\u0000\u0000\u0000\u06c3\u06c2\u0001\u0000\u0000\u0000\u06c4\u00ab"+
53243 		"\u0001\u0000\u0000\u0000\u06c5\u06c6\u0005\u010c\u0000\u0000\u06c6\u06cc"+
53244 		"\u0005\u011c\u0000\u0000\u06c7\u06c8\u0005\u02af\u0000\u0000\u06c8\u06cc"+
53245 		"\u0005\u011c\u0000\u0000\u06c9\u06ca\u0005\u0099\u0000\u0000\u06ca\u06cc"+
53246 		"\u0005\u00dd\u0000\u0000\u06cb\u06c5\u0001\u0000\u0000\u0000\u06cb\u06c7"+
53247 		"\u0001\u0000\u0000\u0000\u06cb\u06c9\u0001\u0000\u0000\u0000\u06cc\u00ad"+
53248 		"\u0001\u0000\u0000\u0000\u06cd\u06ce\u0005\u010c\u0000\u0000\u06ce\u06d4"+
53249 		"\u0005\u0106\u0000\u0000\u06cf\u06d0\u0005\u02af\u0000\u0000\u06d0\u06d4"+
53250 		"\u0005\u0106\u0000\u0000\u06d1\u06d2\u0005\u0099\u0000\u0000\u06d2\u06d4"+
53251 		"\u0005\u00dd\u0000\u0000\u06d3\u06cd\u0001\u0000\u0000\u0000\u06d3\u06cf"+
53252 		"\u0001\u0000\u0000\u0000\u06d3\u06d1\u0001\u0000\u0000\u0000\u06d4\u00af"+
53253 		"\u0001\u0000\u0000\u0000\u06d5\u06d7\u0003H$\u0000\u06d6\u06d8\u0007\u0012"+
53254 		"\u0000\u0000\u06d7\u06d6\u0001\u0000\u0000\u0000\u06d7\u06d8\u0001\u0000"+
53255 		"\u0000\u0000\u06d8\u00b1\u0001\u0000\u0000\u0000\u06d9\u06da\u0005\u0105"+
53256 		"\u0000\u0000\u06da\u06db\u0005\u0018\u0000\u0000\u06db\u06e7\u0005\u02af"+
53257 		"\u0000\u0000\u06dc\u06e7\u0003\u00b8\\\u0000\u06dd\u06de\u0007\u0016\u0000"+
53258 		"\u0000\u06de\u06e7\u0003\u00b6[\u0000\u06df\u06e0\u0005\u0110\u0000\u0000"+
53259 		"\u06e0\u06e1\u0005\u0018\u0000\u0000\u06e1\u06e7\u0005\u02af\u0000\u0000"+
53260 		"\u06e2\u06e4\u0003\u00b4Z\u0000\u06e3\u06e5\u0003\u00be_\u0000\u06e4\u06e3"+
53261 		"\u0001\u0000\u0000\u0000\u06e4\u06e5\u0001\u0000\u0000\u0000\u06e5\u06e7"+
53262 		"\u0001\u0000\u0000\u0000\u06e6\u06d9\u0001\u0000\u0000\u0000\u06e6\u06dc"+
53263 		"\u0001\u0000\u0000\u0000\u06e6\u06dd\u0001\u0000\u0000\u0000\u06e6\u06df"+
53264 		"\u0001\u0000\u0000\u0000\u06e6\u06e2\u0001\u0000\u0000\u0000\u06e7\u00b3"+
53265 		"\u0001\u0000\u0000\u0000\u06e8\u06e9\u0005\u0184\u0000\u0000\u06e9\u06ea"+
53266 		"\u0005\u0018\u0000\u0000\u06ea\u06eb\u0007\u0017\u0000\u0000\u06eb\u00b5"+
53267 		"\u0001\u0000\u0000\u0000\u06ec\u06ed\u0005\u0018\u0000\u0000\u06ed\u06ef"+
53268 		"\u0005\u02af\u0000\u0000\u06ee\u06f0\u0005\u00fb\u0000\u0000\u06ef\u06ee"+
53269 		"\u0001\u0000\u0000\u0000\u06ef\u06f0\u0001\u0000\u0000\u0000\u06f0\u00b7"+
53270 		"\u0001\u0000\u0000\u0000\u06f1\u06f2\u0003\u00ba]\u0000\u06f2\u06f3\u0003"+
53271 		"\u00bc^\u0000\u06f3\u00b9\u0001\u0000\u0000\u0000\u06f4\u06f5\u0007\u0018"+
53272 		"\u0000\u0000\u06f5\u00bb\u0001\u0000\u0000\u0000\u06f6\u06f7\u0005\u0018"+
53273 		"\u0000\u0000\u06f7\u06f8\u0007\u0000\u0000\u0000\u06f8\u00bd\u0001\u0000"+
53274 		"\u0000\u0000\u06f9\u06fa\u0005`\u0000\u0000\u06fa\u06fb\u0005\u00db\u0000"+
53275 		"\u0000\u06fb\u06fc\u0005\u001f\u0000\u0000\u06fc\u06fd\u0003\u00c0`\u0000"+
53276 		"\u06fd\u06fe\u0005 \u0000\u0000\u06fe\u00bf\u0001\u0000\u0000\u0000\u06ff"+
53277 		"\u0704\u0003\u00c2a\u0000\u0700\u0701\u0005%\u0000\u0000\u0701\u0703\u0003"+
53278 		"\u00c2a\u0000\u0702\u0700\u0001\u0000\u0000\u0000\u0703\u0706\u0001\u0000"+
53279 		"\u0000\u0000\u0704\u0702\u0001\u0000\u0000\u0000\u0704\u0705\u0001\u0000"+
53280 		"\u0000\u0000\u0705\u00c1\u0001\u0000\u0000\u0000\u0706\u0704\u0001\u0000"+
53281 		"\u0000\u0000\u0707\u070a\u0005\u02af\u0000\u0000\u0708\u070a\u0003\u00c4"+
53282 		"b\u0000\u0709\u0707\u0001\u0000\u0000\u0000\u0709\u0708\u0001\u0000\u0000"+
53283 		"\u0000\u070a\u00c3\u0001\u0000\u0000\u0000\u070b\u070c\u0005\u02af\u0000"+
53284 		"\u0000\u070c\u070d\u0005e\u0000\u0000\u070d\u070e\u0005\u02af\u0000\u0000"+
53285 		"\u070e\u00c5\u0001\u0000\u0000\u0000\u070f\u0710\u0005\u018a\u0000\u0000"+
53286 		"\u0710\u0711\u0005\u001f\u0000\u0000\u0711\u0712\u0005\u0193\u0000\u0000"+
53287 		"\u0712\u0713\u0005\u0018\u0000\u0000\u0713\u0715\u0005\u02af\u0000\u0000"+
53288 		"\u0714\u0716\u0005\u00fb\u0000\u0000\u0715\u0714\u0001\u0000\u0000\u0000"+
53289 		"\u0715\u0716\u0001\u0000\u0000\u0000\u0716\u0717\u0001\u0000\u0000\u0000"+
53290 		"\u0717\u0718\u0005%\u0000\u0000\u0718\u0719\u0005\u017a\u0000\u0000\u0719"+
53291 		"\u071a\u0005\u0018\u0000\u0000\u071a\u071b\u0007\u0019\u0000\u0000\u071b"+
53292 		"\u071c\u0005 \u0000\u0000\u071c\u00c7\u0001\u0000\u0000\u0000\u071d\u0722"+
53293 		"\u0005`\u0000\u0000\u071e\u071f\u0005\u001f\u0000\u0000\u071f\u0720\u0003"+
53294 		"\u00c6c\u0000\u0720\u0721\u0005 \u0000\u0000\u0721\u0723\u0001\u0000\u0000"+
53295 		"\u0000\u0722\u071e\u0001\u0000\u0000\u0000\u0722\u0723\u0001\u0000\u0000"+
53296 		"\u0000\u0723\u00c9\u0001\u0000\u0000\u0000\u0724\u0725\u0005\u02ac\u0000"+
53297 		"\u0000\u0725\u00cb\u0001\u0000\u0000\u0000\u0726\u072b\u0003\u00cae\u0000"+
53298 		"\u0727\u0728\u0005%\u0000\u0000\u0728\u072a\u0003\u00cae\u0000\u0729\u0727"+
53299 		"\u0001\u0000\u0000\u0000\u072a\u072d\u0001\u0000\u0000\u0000\u072b\u0729"+
53300 		"\u0001\u0000\u0000\u0000\u072b\u072c\u0001\u0000\u0000\u0000\u072c\u00cd"+
53301 		"\u0001\u0000\u0000\u0000\u072d\u072b\u0001\u0000\u0000\u0000\u072e\u072f"+
53302 		"\u0005\u0001\u0000\u0000\u072f\u00cf\u0001\u0000\u0000\u0000\u0730\u0731"+
53303 		"\u0003*\u0015\u0000\u0731\u00d1\u0001\u0000\u0000\u0000\u0732\u0733\u0007"+
53304 		"\u001a\u0000\u0000\u0733\u0738\u0005_\u0000\u0000\u0734\u0739\u0005\u01f7"+
53305 		"\u0000\u0000\u0735\u0739\u0005\u0125\u0000\u0000\u0736\u0739\u0005\u01fc"+
53306 		"\u0000\u0000\u0737\u0739\u0003\u001c\u000e\u0000\u0738\u0734\u0001\u0000"+
53307 		"\u0000\u0000\u0738\u0735\u0001\u0000\u0000\u0000\u0738\u0736\u0001\u0000"+
53308 		"\u0000\u0000\u0738\u0737\u0001\u0000\u0000\u0000\u0739\u00d3\u0001\u0000"+
53309 		"\u0000\u0000\u073a\u073b\u0003*\u0015\u0000\u073b\u00d5\u0001\u0000\u0000"+
53310 		"\u0000\u073c\u073d\u0003\u00d0h\u0000\u073d\u00d7\u0001\u0000\u0000\u0000"+
53311 		"\u073e\u073f\u0003*\u0015\u0000\u073f\u00d9\u0001\u0000\u0000\u0000\u0740"+
53312 		"\u0741\u0003\u00d0h\u0000\u0741\u00db\u0001\u0000\u0000\u0000\u0742\u0743"+
53313 		"\u0007\u001b\u0000\u0000\u0743\u00dd\u0001\u0000\u0000\u0000\u0744\u0745"+
53314 		"\u0005a\u0000\u0000\u0745\u0746\u0005m\u0000\u0000\u0746\u00df\u0001\u0000"+
53315 		"\u0000\u0000\u0747\u0748\u0005\u009c\u0000\u0000\u0748\u00e1\u0001\u0000"+
53316 		"\u0000\u0000\u0749\u074b\u0005\u0282\u0000\u0000\u074a\u074c\u0005\u0283"+
53317 		"\u0000\u0000\u074b\u074a\u0001\u0000\u0000\u0000\u074b\u074c\u0001\u0000"+
53318 		"\u0000\u0000\u074c\u074d\u0001\u0000\u0000\u0000\u074d\u074e\u0003\u00e4"+
53319 		"r\u0000\u074e\u00e3\u0001\u0000\u0000\u0000\u074f\u0755\u0003\u02ae\u0157"+
53320 		"\u0000\u0750\u0755\u0003\u0294\u014a\u0000\u0751\u0755\u0003\u029c\u014e"+
53321 		"\u0000\u0752\u0755\u0003\u02a6\u0153\u0000\u0753\u0755\u0003\u028a\u0145"+
53322 		"\u0000\u0754\u074f\u0001\u0000\u0000\u0000\u0754\u0750\u0001\u0000\u0000"+
53323 		"\u0000\u0754\u0751\u0001\u0000\u0000\u0000\u0754\u0752\u0001\u0000\u0000"+
53324 		"\u0000\u0754\u0753\u0001\u0000\u0000\u0000\u0755\u00e5\u0001\u0000\u0000"+
53325 		"\u0000\u0756\u0759\u0003\u00e8t\u0000\u0757\u0759\u0003\u028a\u0145\u0000"+
53326 		"\u0758\u0756\u0001\u0000\u0000\u0000\u0758\u0757\u0001\u0000\u0000\u0000"+
53327 		"\u0759\u00e7\u0001\u0000\u0000\u0000\u075a\u075b\u00052\u0000\u0000\u075b"+
53328 		"\u075c\u0005;\u0000\u0000\u075c\u075d\u0003@ \u0000\u075d\u075e\u0003"+
53329 		"\u0126\u0093\u0000\u075e\u075f\u0003\u0128\u0094\u0000\u075f\u00e9\u0001"+
53330 		"\u0000\u0000\u0000\u0760\u0761\u00052\u0000\u0000\u0761\u0762\u0003\u0196"+
53331 		"\u00cb\u0000\u0762\u0763\u0005=\u0000\u0000\u0763\u0764\u0003V+\u0000"+
53332 		"\u0764\u0765\u0005`\u0000\u0000\u0765\u0766\u0003@ \u0000\u0766\u0767"+
53333 		"\u0003R)\u0000\u0767\u0768\u0003\u023c\u011e\u0000\u0768\u00eb\u0001\u0000"+
53334 		"\u0000\u0000\u0769\u076a\u00052\u0000\u0000\u076a\u076b\u0005\u00ca\u0000"+
53335 		"\u0000\u076b\u076c\u00032\u0019\u0000\u076c\u076d\u0003\u01de\u00ef\u0000"+
53336 		"\u076d\u00ed\u0001\u0000\u0000\u0000\u076e\u0771\u00052\u0000\u0000\u076f"+
53337 		"\u0770\u0005g\u0000\u0000\u0770\u0772\u00053\u0000\u0000\u0771\u076f\u0001"+
53338 		"\u0000\u0000\u0000\u0771\u0772\u0001\u0000\u0000\u0000\u0772\u0773\u0001"+
53339 		"\u0000\u0000\u0000\u0773\u0774\u0005E\u0000\u0000\u0774\u0775\u00036\u001b"+
53340 		"\u0000\u0775\u0776\u0003\u020a\u0105\u0000\u0776\u0777\u0003\u020c\u0106"+
53341 		"\u0000\u0777\u00ef\u0001\u0000\u0000\u0000\u0778\u077b\u00052\u0000\u0000"+
53342 		"\u0779\u077a\u0005g\u0000\u0000\u077a\u077c\u00053\u0000\u0000\u077b\u0779"+
53343 		"\u0001\u0000\u0000\u0000\u077b\u077c\u0001\u0000\u0000\u0000\u077c\u077d"+
53344 		"\u0001\u0000\u0000\u0000\u077d\u077e\u0007\u001c\u0000\u0000\u077e\u077f"+
53345 		"\u00038\u001c\u0000\u077f\u0780\u0003\u021c\u010e\u0000\u0780\u0781\u0003"+
53346 		"\u0220\u0110\u0000\u0781\u00f1\u0001\u0000\u0000\u0000\u0782\u0785\u0005"+
53347 		"2\u0000\u0000\u0783\u0784\u0005g\u0000\u0000\u0784\u0786\u00053\u0000"+
53348 		"\u0000\u0785\u0783\u0001\u0000\u0000\u0000\u0785\u0786\u0001\u0000\u0000"+
53349 		"\u0000\u0786\u0787\u0001\u0000\u0000\u0000\u0787\u0788\u0005I\u0000\u0000"+
53350 		"\u0788\u0789\u0003:\u001d\u0000\u0789\u078a\u0003\u022a\u0115\u0000\u078a"+
53351 		"\u00f3\u0001\u0000\u0000\u0000\u078b\u078e\u00052\u0000\u0000\u078c\u078d"+
53352 		"\u0005g\u0000\u0000\u078d\u078f\u00053\u0000\u0000\u078e\u078c\u0001\u0000"+
53353 		"\u0000\u0000\u078e\u078f\u0001\u0000\u0000\u0000\u078f\u0790\u0001\u0000"+
53354 		"\u0000\u0000\u0790\u0791\u0005F\u0000\u0000\u0791\u0792\u0003<\u001e\u0000"+
53355 		"\u0792\u0793\u0005`\u0000\u0000\u0793\u0794\u0003\u0238\u011c\u0000\u0794"+
53356 		"\u0795\u0003\u0232\u0119\u0000\u0795\u00f5\u0001\u0000\u0000\u0000\u0796"+
53357 		"\u0797\u00052\u0000\u0000\u0797\u0798\u0005\u0179\u0000\u0000\u0798\u079c"+
53358 		"\u0003>\u001f\u0000\u0799\u079b\u0003\u023a\u011d\u0000\u079a\u0799\u0001"+
53359 		"\u0000\u0000\u0000\u079b\u079e\u0001\u0000\u0000\u0000\u079c\u079a\u0001"+
53360 		"\u0000\u0000\u0000\u079c\u079d\u0001\u0000\u0000\u0000\u079d\u00f7\u0001"+
53361 		"\u0000\u0000\u0000\u079e\u079c\u0001\u0000\u0000\u0000\u079f\u07a0\u0005"+
53362 		"2\u0000\u0000\u07a0\u07a1\u0005\u0158\u0000\u0000\u07a1\u07a4\u0003F#"+
53363 		"\u0000\u07a2\u07a3\u0005\u0280\u0000\u0000\u07a3\u07a5\u0005\u02ae\u0000"+
53364 		"\u0000\u07a4\u07a2\u0001\u0000\u0000\u0000\u07a4\u07a5\u0001\u0000\u0000"+
53365 		"\u0000\u07a5\u07a6\u0001\u0000\u0000\u0000\u07a6\u07a7\u0005`\u0000\u0000"+
53366 		"\u07a7\u07a8\u0005\u016c\u0000\u0000\u07a8\u07aa\u0003B!\u0000\u07a9\u07ab"+
53367 		"\u0003\u0280\u0140\u0000\u07aa\u07a9\u0001\u0000\u0000\u0000\u07aa\u07ab"+
53368 		"\u0001\u0000\u0000\u0000\u07ab\u00f9\u0001\u0000\u0000\u0000\u07ac\u07ad"+
53369 		"\u00052\u0000\u0000\u07ad\u07ae\u00056\u0000\u0000\u07ae\u07b2\u0003\u0286"+
53370 		"\u0143\u0000\u07af\u07b1\u0003\u0288\u0144\u0000\u07b0\u07af\u0001\u0000"+
53371 		"\u0000\u0000\u07b1\u07b4\u0001\u0000\u0000\u0000\u07b2\u07b0\u0001\u0000"+
53372 		"\u0000\u0000\u07b2\u07b3\u0001\u0000\u0000\u0000\u07b3\u00fb\u0001\u0000"+
53373 		"\u0000\u0000\u07b4\u07b2\u0001\u0000\u0000\u0000\u07b5\u07b6\u00053\u0000"+
53374 		"\u0000\u07b6\u07b7\u0005;\u0000\u0000\u07b7\u07b8\u0003@ \u0000\u07b8"+
53375 		"\u07bd\u0003\u0198\u00cc\u0000\u07b9\u07ba\u0005%\u0000\u0000\u07ba\u07bc"+
53376 		"\u0003\u0198\u00cc\u0000\u07bb\u07b9\u0001\u0000\u0000\u0000\u07bc\u07bf"+
53377 		"\u0001\u0000\u0000\u0000\u07bd\u07bb\u0001\u0000\u0000\u0000\u07bd\u07be"+
53378 		"\u0001\u0000\u0000\u0000\u07be\u00fd\u0001\u0000\u0000\u0000\u07bf\u07bd"+
53379 		"\u0001\u0000\u0000\u0000\u07c0\u07c1\u00053\u0000\u0000\u07c1\u07c4\u0005"+
53380 		"=\u0000\u0000\u07c2\u07c5\u0003V+\u0000\u07c3\u07c5\u0005p\u0000\u0000"+
53381 		"\u07c4\u07c2\u0001\u0000\u0000\u0000\u07c4\u07c3\u0001\u0000\u0000\u0000"+
53382 		"\u07c5\u07c6\u0001\u0000\u0000\u0000\u07c6\u07c7\u0005`\u0000\u0000\u07c7"+
53383 		"\u07c8\u0003@ \u0000\u07c8\u07c9\u0003\u0242\u0121\u0000\u07c9\u00ff\u0001"+
53384 		"\u0000\u0000\u0000\u07ca\u07cb\u00053\u0000\u0000\u07cb\u07ce\u0005\u00ca"+
53385 		"\u0000\u0000\u07cc\u07cf\u00032\u0019\u0000\u07cd\u07cf\u0005\u0099\u0000"+
53386 		"\u0000\u07ce\u07cc\u0001\u0000\u0000\u0000\u07ce\u07cd\u0001\u0000\u0000"+
53387 		"\u0000\u07cf\u07d3\u0001\u0000\u0000\u0000\u07d0\u07d2\u0003\u024e\u0127"+
53388 		"\u0000\u07d1\u07d0\u0001\u0000\u0000\u0000\u07d2\u07d5\u0001\u0000\u0000"+
53389 		"\u0000\u07d3\u07d1\u0001\u0000\u0000\u0000\u07d3\u07d4\u0001\u0000\u0000"+
53390 		"\u0000\u07d4\u0101\u0001\u0000\u0000\u0000\u07d5\u07d3\u0001\u0000\u0000"+
53391 		"\u0000\u07d6\u07d7\u00053\u0000\u0000\u07d7\u07d8\u0007\u001c\u0000\u0000"+
53392 		"\u07d8\u07d9\u00038\u001c\u0000\u07d9\u07da\u0003\u021c\u010e\u0000\u07da"+
53393 		"\u07db\u0003\u0220\u0110\u0000\u07db\u0103\u0001\u0000\u0000\u0000\u07dc"+
53394 		"\u07dd\u00053\u0000\u0000\u07dd\u07de\u0005E\u0000\u0000\u07de\u07df\u0003"+
53395 		"6\u001b\u0000\u07df\u07e0\u0003\u020a\u0105\u0000\u07e0\u07e1\u0003\u020c"+
53396 		"\u0106\u0000\u07e1\u0105\u0001\u0000\u0000\u0000\u07e2\u07e3\u00053\u0000"+
53397 		"\u0000\u07e3\u07e4\u0005I\u0000\u0000\u07e4\u07e5\u0003:\u001d\u0000\u07e5"+
53398 		"\u07e6\u0003\u022a\u0115\u0000\u07e6\u0107\u0001\u0000\u0000\u0000\u07e7"+
53399 		"\u07e8\u00053\u0000\u0000\u07e8\u07e9\u0005F\u0000\u0000\u07e9\u07ea\u0003"+
53400 		"<\u001e\u0000\u07ea\u07eb\u0005`\u0000\u0000\u07eb\u07ec\u0003\u0238\u011c"+
53401 		"\u0000\u07ec\u07ed\u0003\u0232\u0119\u0000\u07ed\u0109\u0001\u0000\u0000"+
53402 		"\u0000\u07ee\u07ef\u00053\u0000\u0000\u07ef\u07f0\u0005\u0179\u0000\u0000"+
53403 		"\u07f0\u07f4\u0003>\u001f\u0000\u07f1\u07f3\u0003\u023a\u011d\u0000\u07f2"+
53404 		"\u07f1\u0001\u0000\u0000\u0000\u07f3\u07f6\u0001\u0000\u0000\u0000\u07f4"+
53405 		"\u07f2\u0001\u0000\u0000\u0000\u07f4\u07f5\u0001\u0000\u0000\u0000\u07f5"+
53406 		"\u010b\u0001\u0000\u0000\u0000\u07f6\u07f4\u0001\u0000\u0000\u0000\u07f7"+
53407 		"\u07f8\u00053\u0000\u0000\u07f8\u07f9\u0005\u0158\u0000\u0000\u07f9\u07fd"+
53408 		"\u0003F#\u0000\u07fa\u07fb\u0005`\u0000\u0000\u07fb\u07fc\u0005\u016c"+
53409 		"\u0000\u0000\u07fc\u07fe\u0003B!\u0000\u07fd\u07fa\u0001\u0000\u0000\u0000"+
53410 		"\u07fd\u07fe\u0001\u0000\u0000\u0000\u07fe\u0800\u0001\u0000\u0000\u0000"+
53411 		"\u07ff\u0801\u0003\u0282\u0141\u0000\u0800\u07ff\u0001\u0000\u0000\u0000"+
53412 		"\u0800\u0801\u0001\u0000\u0000\u0000\u0801\u010d\u0001\u0000\u0000\u0000"+
53413 		"\u0802\u0803\u00053\u0000\u0000\u0803\u0804\u00056\u0000\u0000\u0804\u0805"+
53414 		"\u00034\u001a\u0000\u0805\u0807\u0005\u0281\u0000\u0000\u0806\u0808\u0003"+
53415 		"\u035a\u01ad\u0000\u0807\u0806\u0001\u0000\u0000\u0000\u0807\u0808\u0001"+
53416 		"\u0000\u0000\u0000\u0808\u0809\u0001\u0000\u0000\u0000\u0809\u080a\u0003"+
53417 		"\u00cae\u0000\u080a\u010f\u0001\u0000\u0000\u0000\u080b\u080c\u00054\u0000"+
53418 		"\u0000\u080c\u080e\u0005;\u0000\u0000\u080d\u080f\u0003\u00deo\u0000\u080e"+
53419 		"\u080d\u0001\u0000\u0000\u0000\u080e\u080f\u0001\u0000\u0000\u0000\u080f"+
53420 		"\u0810\u0001\u0000\u0000\u0000\u0810\u0811\u0003T*\u0000\u0811\u0111\u0001"+
53421 		"\u0000\u0000\u0000\u0812\u0813\u00054\u0000\u0000\u0813\u0815\u0005=\u0000"+
53422 		"\u0000\u0814\u0816\u0003\u00deo\u0000\u0815\u0814\u0001\u0000\u0000\u0000"+
53423 		"\u0815\u0816\u0001\u0000\u0000\u0000\u0816\u0817\u0001\u0000\u0000\u0000"+
53424 		"\u0817\u0818\u0003V+\u0000\u0818\u0819\u0005`\u0000\u0000\u0819\u081a"+
53425 		"\u0003@ \u0000\u081a\u0113\u0001\u0000\u0000\u0000\u081b\u081c\u00054"+
53426 		"\u0000\u0000\u081c\u081e\u0005\u00ca\u0000\u0000\u081d\u081f\u0003\u00de"+
53427 		"o\u0000\u081e\u081d\u0001\u0000\u0000\u0000\u081e\u081f\u0001\u0000\u0000"+
53428 		"\u0000\u081f\u0820\u0001\u0000\u0000\u0000\u0820\u0825\u00032\u0019\u0000"+
53429 		"\u0821\u0822\u0005%\u0000\u0000\u0822\u0824\u00032\u0019\u0000\u0823\u0821"+
53430 		"\u0001\u0000\u0000\u0000\u0824\u0827\u0001\u0000\u0000\u0000\u0825\u0823"+
53431 		"\u0001\u0000\u0000\u0000\u0825\u0826\u0001\u0000\u0000\u0000\u0826\u0115"+
53432 		"\u0001\u0000\u0000\u0000\u0827\u0825\u0001\u0000\u0000\u0000\u0828\u0829"+
53433 		"\u00054\u0000\u0000\u0829\u082b\u0005E\u0000\u0000\u082a\u082c\u0003\u00de"+
53434 		"o\u0000\u082b\u082a\u0001\u0000\u0000\u0000\u082b\u082c\u0001\u0000\u0000"+
53435 		"\u0000\u082c\u082d\u0001\u0000\u0000\u0000\u082d\u0832\u00036\u001b\u0000"+
53436 		"\u082e\u082f\u0005%\u0000\u0000\u082f\u0831\u00036\u001b\u0000\u0830\u082e"+
53437 		"\u0001\u0000\u0000\u0000\u0831\u0834\u0001\u0000\u0000\u0000\u0832\u0830"+
53438 		"\u0001\u0000\u0000\u0000\u0832\u0833\u0001\u0000\u0000\u0000\u0833\u0117"+
53439 		"\u0001\u0000\u0000\u0000\u0834\u0832\u0001\u0000\u0000\u0000\u0835\u0836"+
53440 		"\u00054\u0000\u0000\u0836\u0838\u0007\u001c\u0000\u0000\u0837\u0839\u0003"+
53441 		"\u00deo\u0000\u0838\u0837\u0001\u0000\u0000\u0000\u0838\u0839\u0001\u0000"+
53442 		"\u0000\u0000\u0839\u083a\u0001\u0000\u0000\u0000\u083a\u083f\u00038\u001c"+
53443 		"\u0000\u083b\u083c\u0005%\u0000\u0000\u083c\u083e\u00038\u001c\u0000\u083d"+
53444 		"\u083b\u0001\u0000\u0000\u0000\u083e\u0841\u0001\u0000\u0000\u0000\u083f"+
53445 		"\u083d\u0001\u0000\u0000\u0000\u083f\u0840\u0001\u0000\u0000\u0000\u0840"+
53446 		"\u0119\u0001\u0000\u0000\u0000\u0841\u083f\u0001\u0000\u0000\u0000\u0842"+
53447 		"\u0843\u00054\u0000\u0000\u0843\u0845\u0005I\u0000\u0000\u0844\u0846\u0003"+
53448 		"\u00deo\u0000\u0845\u0844\u0001\u0000\u0000\u0000\u0845\u0846\u0001\u0000"+
53449 		"\u0000\u0000\u0846\u0847\u0001\u0000\u0000\u0000\u0847\u084c\u0003:\u001d"+
53450 		"\u0000\u0848\u0849\u0005%\u0000\u0000\u0849\u084b\u0003:\u001d\u0000\u084a"+
53451 		"\u0848\u0001\u0000\u0000\u0000\u084b\u084e\u0001\u0000\u0000\u0000\u084c"+
53452 		"\u084a\u0001\u0000\u0000\u0000\u084c\u084d\u0001\u0000\u0000\u0000\u084d"+
53453 		"\u011b\u0001\u0000\u0000\u0000\u084e\u084c\u0001\u0000\u0000\u0000\u084f"+
53454 		"\u0850\u00054\u0000\u0000\u0850\u0852\u0005F\u0000\u0000\u0851\u0853\u0003"+
53455 		"\u00deo\u0000\u0852\u0851\u0001\u0000\u0000\u0000\u0852\u0853\u0001\u0000"+
53456 		"\u0000\u0000\u0853\u0854\u0001\u0000\u0000\u0000\u0854\u0859\u0003<\u001e"+
53457 		"\u0000\u0855\u0856\u0005%\u0000\u0000\u0856\u0858\u0003<\u001e\u0000\u0857"+
53458 		"\u0855\u0001\u0000\u0000\u0000\u0858\u085b\u0001\u0000\u0000\u0000\u0859"+
53459 		"\u0857\u0001\u0000\u0000\u0000\u0859\u085a\u0001\u0000\u0000\u0000\u085a"+
53460 		"\u0862\u0001\u0000\u0000\u0000\u085b\u0859\u0001\u0000\u0000\u0000\u085c"+
53461 		"\u0860\u0005`\u0000\u0000\u085d\u0861\u0005\u00ca\u0000\u0000\u085e\u085f"+
53462 		"\u0005p\u0000\u0000\u085f\u0861\u0005\u013a\u0000\u0000\u0860\u085d\u0001"+
53463 		"\u0000\u0000\u0000\u0860\u085e\u0001\u0000\u0000\u0000\u0861\u0863\u0001"+
53464 		"\u0000\u0000\u0000\u0862\u085c\u0001\u0000\u0000\u0000\u0862\u0863\u0001"+
53465 		"\u0000\u0000\u0000\u0863\u011d\u0001\u0000\u0000\u0000\u0864\u0865\u0005"+
53466 		"4\u0000\u0000\u0865\u0867\u0005\u0179\u0000\u0000\u0866\u0868\u0003\u00de"+
53467 		"o\u0000\u0867\u0866\u0001\u0000\u0000\u0000\u0867\u0868\u0001\u0000\u0000"+
53468 		"\u0000\u0868\u0869\u0001\u0000\u0000\u0000\u0869\u086e\u0003>\u001f\u0000"+
53469 		"\u086a\u086b\u0005%\u0000\u0000\u086b\u086d\u0003>\u001f\u0000\u086c\u086a"+
53470 		"\u0001\u0000\u0000\u0000\u086d\u0870\u0001\u0000\u0000\u0000\u086e\u086c"+
53471 		"\u0001\u0000\u0000\u0000\u086e\u086f\u0001\u0000\u0000\u0000\u086f\u011f"+
53472 		"\u0001\u0000\u0000\u0000\u0870\u086e\u0001\u0000\u0000\u0000\u0871\u0872"+
53473 		"\u00054\u0000\u0000\u0872\u0873\u0005\u0158\u0000\u0000\u0873\u0874\u0003"+
53474 		"F#\u0000\u0874\u0121\u0001\u0000\u0000\u0000\u0875\u0876\u00054\u0000"+
53475 		"\u0000\u0876\u0878\u00056\u0000\u0000\u0877\u0879\u0003\u00deo\u0000\u0878"+
53476 		"\u0877\u0001\u0000\u0000\u0000\u0878\u0879\u0001\u0000\u0000\u0000\u0879"+
53477 		"\u087a\u0001\u0000\u0000\u0000\u087a\u087b\u00034\u001a\u0000\u087b\u0123"+
53478 		"\u0001\u0000\u0000\u0000\u087c\u087d\u00055\u0000\u0000\u087d\u087e\u0005"+
53479 		";\u0000\u0000\u087e\u087f\u0003@ \u0000\u087f\u0125\u0001\u0000\u0000"+
53480 		"\u0000\u0880\u0881\u0005_\u0000\u0000\u0881\u0883\u0005\u0104\u0000\u0000"+
53481 		"\u0882\u0880\u0001\u0000\u0000\u0000\u0882\u0883\u0001\u0000\u0000\u0000"+
53482 		"\u0883\u0127\u0001\u0000\u0000\u0000\u0884\u0885\u0003\u012a\u0095\u0000"+
53483 		"\u0885\u0886\u0003\u017e\u00bf\u0000\u0886\u0887\u0003\u0180\u00c0\u0000"+
53484 		"\u0887\u0129\u0001\u0000\u0000\u0000\u0888\u0889\u0005\u001f\u0000\u0000"+
53485 		"\u0889\u088e\u0003\u012c\u0096\u0000\u088a\u088b\u0005%\u0000\u0000\u088b"+
53486 		"\u088d\u0003\u012c\u0096\u0000\u088c\u088a\u0001\u0000\u0000\u0000\u088d"+
53487 		"\u0890\u0001\u0000\u0000\u0000\u088e\u088c\u0001\u0000\u0000\u0000\u088e"+
53488 		"\u088f\u0001\u0000\u0000\u0000\u088f\u0893\u0001\u0000\u0000\u0000\u0890"+
53489 		"\u088e\u0001\u0000\u0000\u0000\u0891\u0892\u0005%\u0000\u0000\u0892\u0894"+
53490 		"\u0003\u017c\u00be\u0000\u0893\u0891\u0001\u0000\u0000\u0000\u0893\u0894"+
53491 		"\u0001\u0000\u0000\u0000\u0894\u0895\u0001\u0000\u0000\u0000\u0895\u0896"+
53492 		"\u0005 \u0000\u0000\u0896\u012b\u0001\u0000\u0000\u0000\u0897\u089d\u0003"+
53493 		"\u012e\u0097\u0000\u0898\u089d\u0003\u0164\u00b2\u0000\u0899\u089d\u0003"+
53494 		"\u0166\u00b3\u0000\u089a\u089d\u0003\u0168\u00b4\u0000\u089b\u089d\u0003"+
53495 		"\u0176\u00bb\u0000\u089c\u0897\u0001\u0000\u0000\u0000\u089c\u0898\u0001"+
53496 		"\u0000\u0000\u0000\u089c\u0899\u0001\u0000\u0000\u0000\u089c\u089a\u0001"+
53497 		"\u0000\u0000\u0000\u089c\u089b\u0001\u0000\u0000\u0000\u089d\u012d\u0001"+
53498 		"\u0000\u0000\u0000\u089e\u089f\u0003H$\u0000\u089f\u08a3\u0003\u0094J"+
53499 		"\u0000\u08a0\u08a2\u0003\u0130\u0098\u0000\u08a1\u08a0\u0001\u0000\u0000"+
53500 		"\u0000\u08a2\u08a5\u0001\u0000\u0000\u0000\u08a3\u08a1\u0001\u0000\u0000"+
53501 		"\u0000\u08a3\u08a4\u0001\u0000\u0000\u0000\u08a4\u08a6\u0001\u0000\u0000"+
53502 		"\u0000\u08a5\u08a3\u0001\u0000\u0000\u0000\u08a6\u08a8\u0003\u0162\u00b1"+
53503 		"\u0000\u08a7\u08a9\u0003\u0158\u00ac\u0000\u08a8\u08a7\u0001\u0000\u0000"+
53504 		"\u0000\u08a8\u08a9\u0001\u0000\u0000\u0000\u08a9\u012f\u0001\u0000\u0000"+
53505 		"\u0000\u08aa\u08e0\u0005\u0103\u0000\u0000\u08ab\u08ac\u0005\u00f3\u0000"+
53506 		"\u0000\u08ac\u08e0\u0003Z-\u0000\u08ad\u08e0\u0005\u0126\u0000\u0000\u08ae"+
53507 		"\u08af\u0005\u010f\u0000\u0000\u08af\u08b0\u0005L\u0000\u0000\u08b0\u08b1"+
53508 		"\u0005\u001f\u0000\u0000\u08b1\u08b2\u0005E\u0000\u0000\u08b2\u08b3\u0005"+
53509 		"\u0018\u0000\u0000\u08b3\u08b4\u0005\u02ae\u0000\u0000\u08b4\u08e0\u0005"+
53510 		" \u0000\u0000\u08b5\u08b6\u0005>\u0000\u0000\u08b6\u08b8\u0003\u00cae"+
53511 		"\u0000\u08b7\u08b5\u0001\u0000\u0000\u0000\u08b7\u08b8\u0001\u0000\u0000"+
53512 		"\u0000\u08b8\u08b9\u0001\u0000\u0000\u0000\u08b9\u08ba\u0005\u0098\u0000"+
53513 		"\u0000\u08ba\u08e0\u0003b1\u0000\u08bb\u08c1\u0005\u0109\u0000\u0000\u08bc"+
53514 		"\u08bd\u0005\u001f\u0000\u0000\u08bd\u08be\u0005\u02af\u0000\u0000\u08be"+
53515 		"\u08bf\u0005%\u0000\u0000\u08bf\u08c0\u0005\u02af\u0000\u0000\u08c0\u08c2"+
53516 		"\u0005 \u0000\u0000\u08c1\u08bc\u0001\u0000\u0000\u0000\u08c1\u08c2\u0001"+
53517 		"\u0000\u0000\u0000\u08c2\u08e0\u0001\u0000\u0000\u0000\u08c3\u08c4\u0005"+
53518 		"i\u0000\u0000\u08c4\u08c5\u0005d\u0000\u0000\u08c5\u08e0\u0005\u0121\u0000"+
53519 		"\u0000\u08c6\u08c7\u0005\u00e4\u0000\u0000\u08c7\u08c8\u0005\u00e1\u0000"+
53520 		"\u0000\u08c8\u08c9\u0005_\u0000\u0000\u08c9\u08ca\u0005\u00dd\u0000\u0000"+
53521 		"\u08ca\u08cc\u0007\u001d\u0000\u0000\u08cb\u08cd\u0005\u00d8\u0000\u0000"+
53522 		"\u08cc\u08cb\u0001\u0000\u0000\u0000\u08cc\u08cd\u0001\u0000\u0000\u0000"+
53523 		"\u08cd\u08e0\u0001\u0000\u0000\u0000\u08ce\u08d0\u0005i\u0000\u0000\u08cf"+
53524 		"\u08ce\u0001\u0000\u0000\u0000\u08cf\u08d0\u0001\u0000\u0000\u0000\u08d0"+
53525 		"\u08d1\u0001\u0000\u0000\u0000\u08d1\u08e0\u0005j\u0000\u0000\u08d2\u08e0"+
53526 		"\u0005\u0123\u0000\u0000\u08d3\u08d4\u0005\u0101\u0000\u0000\u08d4\u08d5"+
53527 		"\u0005L\u0000\u0000\u08d5\u08e0\u0003\u0132\u0099\u0000\u08d6\u08db\u0003"+
53528 		"\u0134\u009a\u0000\u08d7\u08d8\u0005%\u0000\u0000\u08d8\u08da\u0003\u0134"+
53529 		"\u009a\u0000\u08d9\u08d7\u0001\u0000\u0000\u0000\u08da\u08dd\u0001\u0000"+
53530 		"\u0000\u0000\u08db\u08d9\u0001\u0000\u0000\u0000\u08db\u08dc\u0001\u0000"+
53531 		"\u0000\u0000\u08dc\u08e0\u0001\u0000\u0000\u0000\u08dd\u08db\u0001\u0000"+
53532 		"\u0000\u0000\u08de\u08e0\u0003\u0158\u00ac\u0000\u08df\u08aa\u0001\u0000"+
53533 		"\u0000\u0000\u08df\u08ab\u0001\u0000\u0000\u0000\u08df\u08ad\u0001\u0000"+
53534 		"\u0000\u0000\u08df\u08ae\u0001\u0000\u0000\u0000\u08df\u08b7\u0001\u0000"+
53535 		"\u0000\u0000\u08df\u08bb\u0001\u0000\u0000\u0000\u08df\u08c3\u0001\u0000"+
53536 		"\u0000\u0000\u08df\u08c6\u0001\u0000\u0000\u0000\u08df\u08cf\u0001\u0000"+
53537 		"\u0000\u0000\u08df\u08d2\u0001\u0000\u0000\u0000\u08df\u08d3\u0001\u0000"+
53538 		"\u0000\u0000\u08df\u08d6\u0001\u0000\u0000\u0000\u08df\u08de\u0001\u0000"+
53539 		"\u0000\u0000\u08e0\u0131\u0001\u0000\u0000\u0000\u08e1\u08e2\u0005\u001f"+
53540 		"\u0000\u0000\u08e2\u08e3\u0005\u0180\u0000\u0000\u08e3\u08e4\u0005\u0018"+
53541 		"\u0000\u0000\u08e4\u08e5\u0003\u00cae\u0000\u08e5\u08e6\u0005%\u0000\u0000"+
53542 		"\u08e6\u08e7\u0005\u0186\u0000\u0000\u08e7\u08e8\u0005\u0018\u0000\u0000"+
53543 		"\u08e8\u08e9\u0007\u001e\u0000\u0000\u08e9\u08ea\u0005%\u0000\u0000\u08ea"+
53544 		"\u08eb\u0005\u00ee\u0000\u0000\u08eb\u08ec\u0005\u0018\u0000\u0000\u08ec"+
53545 		"\u08ed\u0005\u02ae\u0000\u0000\u08ed\u08ee\u0005 \u0000\u0000\u08ee\u0133"+
53546 		"\u0001\u0000\u0000\u0000\u08ef\u08f0\u0005>\u0000\u0000\u08f0\u08f2\u0003"+
53547 		"X,\u0000\u08f1\u08ef\u0001\u0000\u0000\u0000\u08f1\u08f2\u0001\u0000\u0000"+
53548 		"\u0000\u08f2\u08f6\u0001\u0000\u0000\u0000\u08f3\u08f7\u0003\u013c\u009e"+
53549 		"\u0000\u08f4\u08f7\u0003\u0150\u00a8\u0000\u08f5\u08f7\u0003\u0156\u00ab"+
53550 		"\u0000\u08f6\u08f3\u0001\u0000\u0000\u0000\u08f6\u08f4\u0001\u0000\u0000"+
53551 		"\u0000\u08f6\u08f5\u0001\u0000\u0000\u0000\u08f7\u0135\u0001\u0000\u0000"+
53552 		"\u0000\u08f8\u08f9\u0005>\u0000\u0000\u08f9\u08fb\u0003X,\u0000\u08fa"+
53553 		"\u08f8\u0001\u0000\u0000\u0000\u08fa\u08fb\u0001\u0000\u0000\u0000\u08fb"+
53554 		"\u08ff\u0001\u0000\u0000\u0000\u08fc\u0900\u0003\u013c\u009e\u0000\u08fd"+
53555 		"\u0900\u0003\u0138\u009c\u0000\u08fe\u0900\u0003\u0156\u00ab\u0000\u08ff"+
53556 		"\u08fc\u0001\u0000\u0000\u0000\u08ff\u08fd\u0001\u0000\u0000\u0000\u08ff"+
53557 		"\u08fe\u0001\u0000\u0000\u0000\u0900\u0137\u0001\u0000\u0000\u0000\u0901"+
53558 		"\u0902\u0005A\u0000\u0000\u0902\u0904\u0005B\u0000\u0000\u0903\u0901\u0001"+
53559 		"\u0000\u0000\u0000\u0903\u0904\u0001\u0000\u0000\u0000\u0904\u0905\u0001"+
53560 		"\u0000\u0000\u0000\u0905\u090a\u0003@ \u0000\u0906\u0907\u0005\u001f\u0000"+
53561 		"\u0000\u0907\u0908\u0003H$\u0000\u0908\u0909\u0005 \u0000\u0000\u0909"+
53562 		"\u090b\u0001\u0000\u0000\u0000\u090a\u0906\u0001\u0000\u0000\u0000\u090a"+
53563 		"\u090b\u0001\u0000\u0000\u0000\u090b\u090f\u0001\u0000\u0000\u0000\u090c"+
53564 		"\u090e\u0003\u013a\u009d\u0000\u090d\u090c\u0001\u0000\u0000\u0000\u090e"+
53565 		"\u0911\u0001\u0000\u0000\u0000\u090f\u090d\u0001\u0000\u0000\u0000\u090f"+
53566 		"\u0910\u0001\u0000\u0000\u0000\u0910\u0139\u0001\u0000\u0000\u0000\u0911"+
53567 		"\u090f\u0001\u0000\u0000\u0000\u0912\u0913\u0005`\u0000\u0000\u0913\u0917"+
53568 		"\u00051\u0000\u0000\u0914\u0915\u0005\u00e5\u0000\u0000\u0915\u0918\u0005"+
53569 		"\u00ed\u0000\u0000\u0916\u0918\u0005\u00e2\u0000\u0000\u0917\u0914\u0001"+
53570 		"\u0000\u0000\u0000\u0917\u0916\u0001\u0000\u0000\u0000\u0918\u0921\u0001"+
53571 		"\u0000\u0000\u0000\u0919\u091a\u0005`\u0000\u0000\u091a\u091b\u00050\u0000"+
53572 		"\u0000\u091b\u091c\u0005\u00e5\u0000\u0000\u091c\u0921\u0005\u00ed\u0000"+
53573 		"\u0000\u091d\u091e\u0005i\u0000\u0000\u091e\u091f\u0005d\u0000\u0000\u091f"+
53574 		"\u0921\u0005\u0121\u0000\u0000\u0920\u0912\u0001\u0000\u0000\u0000\u0920"+
53575 		"\u0919\u0001\u0000\u0000\u0000\u0920\u091d\u0001\u0000\u0000\u0000\u0921"+
53576 		"\u013b\u0001\u0000\u0000\u0000\u0922\u0925\u0003`0\u0000\u0923\u0925\u0005"+
53577 		"@\u0000\u0000\u0924\u0922\u0001\u0000\u0000\u0000\u0924\u0923\u0001\u0000"+
53578 		"\u0000\u0000\u0925\u0928\u0001\u0000\u0000\u0000\u0926\u0929\u0003\u013e"+
53579 		"\u009f\u0000\u0927\u0929\u0003\u014c\u00a6\u0000\u0928\u0926\u0001\u0000"+
53580 		"\u0000\u0000\u0928\u0927\u0001\u0000\u0000\u0000\u0929\u013d\u0001\u0000"+
53581 		"\u0000\u0000\u092a\u092c\u0003\u0140\u00a0\u0000\u092b\u092a\u0001\u0000"+
53582 		"\u0000\u0000\u092b\u092c\u0001\u0000\u0000\u0000\u092c\u092e\u0001\u0000"+
53583 		"\u0000\u0000\u092d\u092f\u0003\u0142\u00a1\u0000\u092e\u092d\u0001\u0000"+
53584 		"\u0000\u0000\u092e\u092f\u0001\u0000\u0000\u0000\u092f\u0931\u0001\u0000"+
53585 		"\u0000\u0000\u0930\u0932\u0003\u0144\u00a2\u0000\u0931\u0930\u0001\u0000"+
53586 		"\u0000\u0000\u0931\u0932\u0001\u0000\u0000\u0000\u0932\u013f\u0001\u0000"+
53587 		"\u0000\u0000\u0933\u0934\u0007\u001f\u0000\u0000\u0934\u0141\u0001\u0000"+
53588 		"\u0000\u0000\u0935\u0944\u0005L\u0000\u0000\u0936\u0937\u0005\u0105\u0000"+
53589 		"\u0000\u0937\u0938\u0005\u0018\u0000\u0000\u0938\u0945\u0005\u02af\u0000"+
53590 		"\u0000\u0939\u093a\u0005\u001f\u0000\u0000\u093a\u093f\u0003\u00b2Y\u0000"+
53591 		"\u093b\u093c\u0005%\u0000\u0000\u093c\u093e\u0003\u00b2Y\u0000\u093d\u093b"+
53592 		"\u0001\u0000\u0000\u0000\u093e\u0941\u0001\u0000\u0000\u0000\u093f\u093d"+
53593 		"\u0001\u0000\u0000\u0000\u093f\u0940\u0001\u0000\u0000\u0000\u0940\u0942"+
53594 		"\u0001\u0000\u0000\u0000\u0941\u093f\u0001\u0000\u0000\u0000\u0942\u0943"+
53595 		"\u0005 \u0000\u0000\u0943\u0945\u0001\u0000\u0000\u0000\u0944\u0936\u0001"+
53596 		"\u0000\u0000\u0000\u0944\u0939\u0001\u0000\u0000\u0000\u0945\u0143\u0001"+
53597 		"\u0000\u0000\u0000\u0946\u094a\u0003\u0146\u00a3\u0000\u0947\u094a\u0003"+
53598 		"\u0148\u00a4\u0000\u0948\u094a\u0003\u014a\u00a5\u0000\u0949\u0946\u0001"+
53599 		"\u0000\u0000\u0000\u0949\u0947\u0001\u0000\u0000\u0000\u0949\u0948\u0001"+
53600 		"\u0000\u0000\u0000\u094a\u0145\u0001\u0000\u0000\u0000\u094b\u094c\u0005"+
53601 		"`\u0000\u0000\u094c\u094d\u00034\u001a\u0000\u094d\u094e\u0005\u001f\u0000"+
53602 		"\u0000\u094e\u094f\u0003H$\u0000\u094f\u0950\u0005 \u0000\u0000\u0950"+
53603 		"\u0147\u0001\u0000\u0000\u0000\u0951\u0952\u0005`\u0000\u0000\u0952\u0953"+
53604 		"\u0003\u00cae\u0000\u0953\u0149\u0001\u0000\u0000\u0000\u0954\u0955\u0005"+
53605 		"`\u0000\u0000\u0955\u0956\u0005\u02ae\u0000\u0000\u0956\u014b\u0001\u0000"+
53606 		"\u0000\u0000\u0957\u095e\u0005\u00f2\u0000\u0000\u0958\u0959\u0005\u00f2"+
53607 		"\u0000\u0000\u0959\u095b\u0005\u0107\u0000\u0000\u095a\u095c\u0003\u014e"+
53608 		"\u00a7\u0000\u095b\u095a\u0001\u0000\u0000\u0000\u095b\u095c\u0001\u0000"+
53609 		"\u0000\u0000\u095c\u095e\u0001\u0000\u0000\u0000\u095d\u0957\u0001\u0000"+
53610 		"\u0000\u0000\u095d\u0958\u0001\u0000\u0000\u0000\u095e\u014d\u0001\u0000"+
53611 		"\u0000\u0000\u095f\u0960\u0005L\u0000\u0000\u0960\u0961\u0005\u001f\u0000"+
53612 		"\u0000\u0961\u0962\u0005\u017e\u0000\u0000\u0962\u0963\u0005\u0018\u0000"+
53613 		"\u0000\u0963\u0964\u0005\u02af\u0000\u0000\u0964\u0965\u0005 \u0000\u0000"+
53614 		"\u0965\u014f\u0001\u0000\u0000\u0000\u0966\u0967\u0005A\u0000\u0000\u0967"+
53615 		"\u0969\u0005B\u0000\u0000\u0968\u0966\u0001\u0000\u0000\u0000\u0968\u0969"+
53616 		"\u0001\u0000\u0000\u0000\u0969\u096a\u0001\u0000\u0000\u0000\u096a\u096b"+
53617 		"\u0005\u00e8\u0000\u0000\u096b\u0970\u0003@ \u0000\u096c\u096d\u0005\u001f"+
53618 		"\u0000\u0000\u096d\u096e\u0003H$\u0000\u096e\u096f\u0005 \u0000\u0000"+
53619 		"\u096f\u0971\u0001\u0000\u0000\u0000\u0970\u096c\u0001\u0000\u0000\u0000"+
53620 		"\u0970\u0971\u0001\u0000\u0000\u0000\u0971\u0975\u0001\u0000\u0000\u0000"+
53621 		"\u0972\u0974\u0003\u0152\u00a9\u0000\u0973\u0972\u0001\u0000\u0000\u0000"+
53622 		"\u0974\u0977\u0001\u0000\u0000\u0000\u0975\u0973\u0001\u0000\u0000\u0000"+
53623 		"\u0975\u0976\u0001\u0000\u0000\u0000\u0976\u0151\u0001\u0000\u0000\u0000"+
53624 		"\u0977\u0975\u0001\u0000\u0000\u0000\u0978\u0979\u0005`\u0000\u0000\u0979"+
53625 		"\u097a\u0007 \u0000\u0000\u097a\u097f\u0003\u0154\u00aa\u0000\u097b\u097c"+
53626 		"\u0005i\u0000\u0000\u097c\u097d\u0005d\u0000\u0000\u097d\u097f\u0005\u0121"+
53627 		"\u0000\u0000\u097e\u0978\u0001\u0000\u0000\u0000\u097e\u097b\u0001\u0000"+
53628 		"\u0000\u0000\u097f\u0153\u0001\u0000\u0000\u0000\u0980\u0981\u0005\u00e5"+
53629 		"\u0000\u0000\u0981\u0986\u0005\u00ed\u0000\u0000\u0982\u0986\u0005\u00e2"+
53630 		"\u0000\u0000\u0983\u0984\u0005:\u0000\u0000\u0984\u0986\u0007!\u0000\u0000"+
53631 		"\u0985\u0980\u0001\u0000\u0000\u0000\u0985\u0982\u0001\u0000\u0000\u0000"+
53632 		"\u0985\u0983\u0001\u0000\u0000\u0000\u0986\u0155\u0001\u0000\u0000\u0000"+
53633 		"\u0987\u098b\u0005\u00e3\u0000\u0000\u0988\u0989\u0005i\u0000\u0000\u0989"+
53634 		"\u098a\u0005d\u0000\u0000\u098a\u098c\u0005\u0121\u0000\u0000\u098b\u0988"+
53635 		"\u0001\u0000\u0000\u0000\u098b\u098c\u0001\u0000\u0000\u0000\u098c\u098d"+
53636 		"\u0001\u0000\u0000\u0000\u098d\u098e\u0005\u001f\u0000\u0000\u098e\u098f"+
53637 		"\u0003b1\u0000\u098f\u0990\u0005 \u0000\u0000\u0990\u0157\u0001\u0000"+
53638 		"\u0000\u0000\u0991\u0992\u0005=\u0000\u0000\u0992\u0994\u0003V+\u0000"+
53639 		"\u0993\u0995\u0003\u0140\u00a0\u0000\u0994\u0993\u0001\u0000\u0000\u0000"+
53640 		"\u0994\u0995\u0001\u0000\u0000\u0000\u0995\u0997\u0001\u0000\u0000\u0000"+
53641 		"\u0996\u0998\u0003\u015a\u00ad\u0000\u0997\u0996\u0001\u0000\u0000\u0000"+
53642 		"\u0997\u0998\u0001\u0000\u0000\u0000\u0998\u099a\u0001\u0000\u0000\u0000"+
53643 		"\u0999\u099b\u0003\u015c\u00ae\u0000\u099a\u0999\u0001\u0000\u0000\u0000"+
53644 		"\u099a\u099b\u0001\u0000\u0000\u0000\u099b\u099d\u0001\u0000\u0000\u0000"+
53645 		"\u099c\u099e\u0003\u0160\u00b0\u0000\u099d\u099c\u0001\u0000\u0000\u0000"+
53646 		"\u099d\u099e\u0001\u0000\u0000\u0000\u099e\u0159\u0001\u0000\u0000\u0000"+
53647 		"\u099f\u09a0\u0005L\u0000\u0000\u09a0\u09a1\u0005\u001f\u0000\u0000\u09a1"+
53648 		"\u09a6\u0003\u00b2Y\u0000\u09a2\u09a3\u0005%\u0000\u0000\u09a3\u09a5\u0003"+
53649 		"\u00b2Y\u0000\u09a4\u09a2\u0001\u0000\u0000\u0000\u09a5\u09a8\u0001\u0000"+
53650 		"\u0000\u0000\u09a6\u09a4\u0001\u0000\u0000\u0000\u09a6\u09a7\u0001\u0000"+
53651 		"\u0000\u0000\u09a7\u09a9\u0001\u0000\u0000\u0000\u09a8\u09a6\u0001\u0000"+
53652 		"\u0000\u0000\u09a9\u09aa\u0005 \u0000\u0000\u09aa\u015b\u0001\u0000\u0000"+
53653 		"\u0000\u09ab\u09af\u0003\u0146\u00a3\u0000\u09ac\u09af\u0003\u0148\u00a4"+
53654 		"\u0000\u09ad\u09af\u0003\u015e\u00af\u0000\u09ae\u09ab\u0001\u0000\u0000"+
53655 		"\u0000\u09ae\u09ac\u0001\u0000\u0000\u0000\u09ae\u09ad\u0001\u0000\u0000"+
53656 		"\u0000\u09af\u015d\u0001\u0000\u0000\u0000\u09b0\u09b1\u0005`\u0000\u0000"+
53657 		"\u09b1\u09b2\u0005\u0098\u0000\u0000\u09b2\u015f\u0001\u0000\u0000\u0000"+
53658 		"\u09b3\u09b7\u0005\u0198\u0000\u0000\u09b4\u09b8\u0003\u00cae\u0000\u09b5"+
53659 		"\u09b8\u00034\u001a\u0000\u09b6\u09b8\u0005\u02ae\u0000\u0000\u09b7\u09b4"+
53660 		"\u0001\u0000\u0000\u0000\u09b7\u09b5\u0001\u0000\u0000\u0000\u09b7\u09b6"+
53661 		"\u0001\u0000\u0000\u0000\u09b8\u0161\u0001\u0000\u0000\u0000\u09b9\u09be"+
53662 		"\u0003\u0134\u009a\u0000\u09ba\u09bb\u0005%\u0000\u0000\u09bb\u09bd\u0003"+
53663 		"\u0134\u009a\u0000\u09bc\u09ba\u0001\u0000\u0000\u0000\u09bd\u09c0\u0001"+
53664 		"\u0000\u0000\u0000\u09be\u09bc\u0001\u0000\u0000\u0000\u09be\u09bf\u0001"+
53665 		"\u0000\u0000\u0000\u09bf\u09c2\u0001\u0000\u0000\u0000\u09c0\u09be\u0001"+
53666 		"\u0000\u0000\u0000\u09c1\u09b9\u0001\u0000\u0000\u0000\u09c1\u09c2\u0001"+
53667 		"\u0000\u0000\u0000\u09c2\u0163\u0001\u0000\u0000\u0000\u09c3\u09c4\u0003"+
53668 		"H$\u0000\u09c4\u09c5\u0005_\u0000\u0000\u09c5\u09cb\u0003b1\u0000\u09c6"+
53669 		"\u09c9\u0005\u011b\u0000\u0000\u09c7\u09c8\u0005i\u0000\u0000\u09c8\u09ca"+
53670 		"\u0005j\u0000\u0000\u09c9\u09c7\u0001\u0000\u0000\u0000\u09c9\u09ca\u0001"+
53671 		"\u0000\u0000\u0000\u09ca\u09cc\u0001\u0000\u0000\u0000\u09cb\u09c6\u0001"+
53672 		"\u0000\u0000\u0000\u09cb\u09cc\u0001\u0000\u0000\u0000\u09cc\u09ce\u0001"+
53673 		"\u0000\u0000\u0000\u09cd\u09cf\u0003\u0136\u009b\u0000\u09ce\u09cd\u0001"+
53674 		"\u0000\u0000\u0000\u09ce\u09cf\u0001\u0000\u0000\u0000\u09cf\u0165\u0001"+
53675 		"\u0000\u0000\u0000\u09d0\u09d1\u0003\u00cae\u0000\u09d1\u09d2\u0005\u02ac"+
53676 		"\u0000\u0000\u09d2\u09d3\u0005\u0181\u0000\u0000\u09d3\u09d4\u0005d\u0000"+
53677 		"\u0000\u09d4\u09d5\u0005\u017d\u0000\u0000\u09d5\u0167\u0001\u0000\u0000"+
53678 		"\u0000\u09d6\u09d7\u0005>\u0000\u0000\u09d7\u09d9\u0003X,\u0000\u09d8"+
53679 		"\u09d6\u0001\u0000\u0000\u0000\u09d8\u09d9\u0001\u0000\u0000\u0000\u09d9"+
53680 		"\u09dd\u0001\u0000\u0000\u0000\u09da\u09de\u0003\u016a\u00b5\u0000\u09db"+
53681 		"\u09de\u0003\u0174\u00ba\u0000\u09dc\u09de\u0003\u0156\u00ab\u0000\u09dd"+
53682 		"\u09da\u0001\u0000\u0000\u0000\u09dd\u09db\u0001\u0000\u0000\u0000\u09dd"+
53683 		"\u09dc\u0001\u0000\u0000\u0000\u09de\u0169\u0001\u0000\u0000\u0000\u09df"+
53684 		"\u09e2\u0003\u016c\u00b6\u0000\u09e0\u09e3\u0003\u016e\u00b7\u0000\u09e1"+
53685 		"\u09e3\u0003\u0170\u00b8\u0000\u09e2\u09e0\u0001\u0000\u0000\u0000\u09e2"+
53686 		"\u09e1\u0001\u0000\u0000\u0000\u09e3\u016b\u0001\u0000\u0000\u0000\u09e4"+
53687 		"\u09e7\u0003`0\u0000\u09e5\u09e7\u0005@\u0000\u0000\u09e6\u09e4\u0001"+
53688 		"\u0000\u0000\u0000\u09e6\u09e5\u0001\u0000\u0000\u0000\u09e7\u016d\u0001"+
53689 		"\u0000\u0000\u0000\u09e8\u09ea\u0003\u0140\u00a0\u0000\u09e9\u09e8\u0001"+
53690 		"\u0000\u0000\u0000\u09e9\u09ea\u0001\u0000\u0000\u0000\u09ea\u09eb\u0001"+
53691 		"\u0000\u0000\u0000\u09eb\u09ed\u0003P(\u0000\u09ec\u09ee\u0003\u0142\u00a1"+
53692 		"\u0000\u09ed\u09ec\u0001\u0000\u0000\u0000\u09ed\u09ee\u0001\u0000\u0000"+
53693 		"\u0000\u09ee\u09f0\u0001\u0000\u0000\u0000\u09ef\u09f1\u0003\u0144\u00a2"+
53694 		"\u0000\u09f0\u09ef\u0001\u0000\u0000\u0000\u09f0\u09f1\u0001\u0000\u0000"+
53695 		"\u0000\u09f1\u016f\u0001\u0000\u0000\u0000\u09f2\u09f5\u0005\u00f2\u0000"+
53696 		"\u0000\u09f3\u09f6\u0003P(\u0000\u09f4\u09f6\u0003\u0172\u00b9\u0000\u09f5"+
53697 		"\u09f3\u0001\u0000\u0000\u0000\u09f5\u09f4\u0001\u0000\u0000\u0000\u09f6"+
53698 		"\u0171\u0001\u0000\u0000\u0000\u09f7\u09f8\u0005\u0107\u0000\u0000\u09f8"+
53699 		"\u09f9\u0003P(\u0000\u09f9\u09fa\u0003\u014e\u00a7\u0000\u09fa\u0173\u0001"+
53700 		"\u0000\u0000\u0000\u09fb\u09fc\u0005A\u0000\u0000\u09fc\u09fe\u0005B\u0000"+
53701 		"\u0000\u09fd\u09fb\u0001\u0000\u0000\u0000\u09fd\u09fe\u0001\u0000\u0000"+
53702 		"\u0000\u09fe\u09ff\u0001\u0000\u0000\u0000\u09ff\u0a00\u0003P(\u0000\u0a00"+
53703 		"\u0a01\u0005\u00e8\u0000\u0000\u0a01\u0a02\u0003@ \u0000\u0a02\u0a06\u0003"+
53704 		"P(\u0000\u0a03\u0a05\u0003\u0152\u00a9\u0000\u0a04\u0a03\u0001\u0000\u0000"+
53705 		"\u0000\u0a05\u0a08\u0001\u0000\u0000\u0000\u0a06\u0a04\u0001\u0000\u0000"+
53706 		"\u0000\u0a06\u0a07\u0001\u0000\u0000\u0000\u0a07\u0175\u0001\u0000\u0000"+
53707 		"\u0000\u0a08\u0a06\u0001\u0000\u0000\u0000\u0a09\u0a0a\u0005=\u0000\u0000"+
53708 		"\u0a0a\u0a0b\u0003V+\u0000\u0a0b\u0a0e\u0003\u0178\u00bc\u0000\u0a0c\u0a0d"+
53709 		"\u0005L\u0000\u0000\u0a0d\u0a0f\u0003\u017a\u00bd\u0000\u0a0e\u0a0c\u0001"+
53710 		"\u0000\u0000\u0000\u0a0e\u0a0f\u0001\u0000\u0000\u0000\u0a0f\u0a11\u0001"+
53711 		"\u0000\u0000\u0000\u0a10\u0a12\u0003\u015c\u00ae\u0000\u0a11\u0a10\u0001"+
53712 		"\u0000\u0000\u0000\u0a11\u0a12\u0001\u0000\u0000\u0000\u0a12\u0a14\u0001"+
53713 		"\u0000\u0000\u0000\u0a13\u0a15\u0003\u0160\u00b0\u0000\u0a14\u0a13\u0001"+
53714 		"\u0000\u0000\u0000\u0a14\u0a15\u0001\u0000\u0000\u0000\u0a15\u0177\u0001"+
53715 		"\u0000\u0000\u0000\u0a16\u0a18\u0003\u0140\u00a0\u0000\u0a17\u0a16\u0001"+
53716 		"\u0000\u0000\u0000\u0a17\u0a18\u0001\u0000\u0000\u0000\u0a18\u0a19\u0001"+
53717 		"\u0000\u0000\u0000\u0a19\u0a22\u0003P(\u0000\u0a1a\u0a1b\u0005\u00f1\u0000"+
53718 		"\u0000\u0a1b\u0a22\u0005\u00f4\u0000\u0000\u0a1c\u0a1e\u0005\u00f2\u0000"+
53719 		"\u0000\u0a1d\u0a1c\u0001\u0000\u0000\u0000\u0a1d\u0a1e\u0001\u0000\u0000"+
53720 		"\u0000\u0a1e\u0a1f\u0001\u0000\u0000\u0000\u0a1f\u0a20\u0005\u00f4\u0000"+
53721 		"\u0000\u0a20\u0a22\u0003P(\u0000\u0a21\u0a17\u0001\u0000\u0000\u0000\u0a21"+
53722 		"\u0a1a\u0001\u0000\u0000\u0000\u0a21\u0a1d\u0001\u0000\u0000\u0000\u0a22"+
53723 		"\u0179\u0001\u0000\u0000\u0000\u0a23\u0a24\u0005\u001f\u0000\u0000\u0a24"+
53724 		"\u0a29\u0003\u00b2Y\u0000\u0a25\u0a26\u0005%\u0000\u0000\u0a26\u0a28\u0003"+
53725 		"\u00b2Y\u0000\u0a27\u0a25\u0001\u0000\u0000\u0000\u0a28\u0a2b\u0001\u0000"+
53726 		"\u0000\u0000\u0a29\u0a27\u0001\u0000\u0000\u0000\u0a29\u0a2a\u0001\u0000"+
53727 		"\u0000\u0000\u0a2a\u0a2c\u0001\u0000\u0000\u0000\u0a2b\u0a29\u0001\u0000"+
53728 		"\u0000\u0000\u0a2c\u0a2d\u0005 \u0000\u0000\u0a2d\u017b\u0001\u0000\u0000"+
53729 		"\u0000\u0a2e\u0a2f\u0005\u011a\u0000\u0000\u0a2f\u0a30\u0005d\u0000\u0000"+
53730 		"\u0a30\u0a31\u0005\u0187\u0000\u0000\u0a31\u0a32\u0005\u001f\u0000\u0000"+
53731 		"\u0a32\u0a33\u0003H$\u0000\u0a33\u0a34\u0005%\u0000\u0000\u0a34\u0a35"+
53732 		"\u0003H$\u0000\u0a35\u0a36\u0005 \u0000\u0000\u0a36\u017d\u0001\u0000"+
53733 		"\u0000\u0000\u0a37\u0a3f\u0005`\u0000\u0000\u0a38\u0a39\u00034\u001a\u0000"+
53734 		"\u0a39\u0a3a\u0005\u001f\u0000\u0000\u0a3a\u0a3b\u0003H$\u0000\u0a3b\u0a3c"+
53735 		"\u0005 \u0000\u0000\u0a3c\u0a40\u0001\u0000\u0000\u0000\u0a3d\u0a40\u0003"+
53736 		"\u00cae\u0000\u0a3e\u0a40\u0005\u02ae\u0000\u0000\u0a3f\u0a38\u0001\u0000"+
53737 		"\u0000\u0000\u0a3f\u0a3d\u0001\u0000\u0000\u0000\u0a3f\u0a3e\u0001\u0000"+
53738 		"\u0000\u0000\u0a40\u0a42\u0001\u0000\u0000\u0000\u0a41\u0a37\u0001\u0000"+
53739 		"\u0000\u0000\u0a41\u0a42\u0001\u0000\u0000\u0000\u0a42\u017f\u0001\u0000"+
53740 		"\u0000\u0000\u0a43\u0a46\u0005\u0189\u0000\u0000\u0a44\u0a47\u0003\u00ca"+
53741 		"e\u0000\u0a45\u0a47\u0005\u02ae\u0000\u0000\u0a46\u0a44\u0001\u0000\u0000"+
53742 		"\u0000\u0a46\u0a45\u0001\u0000\u0000\u0000\u0a47\u0a49\u0001\u0000\u0000"+
53743 		"\u0000\u0a48\u0a43\u0001\u0000\u0000\u0000\u0a48\u0a49\u0001\u0000\u0000"+
53744 		"\u0000\u0a49\u0a51\u0001\u0000\u0000\u0000\u0a4a\u0a4b\u0005\u0198\u0000"+
53745 		"\u0000\u0a4b\u0a50\u00034\u001a\u0000\u0a4c\u0a4d\u0003\u00cae\u0000\u0a4d"+
53746 		"\u0a4e\u0005\u02ae\u0000\u0000\u0a4e\u0a50\u0001\u0000\u0000\u0000\u0a4f"+
53747 		"\u0a4a\u0001\u0000\u0000\u0000\u0a4f\u0a4c\u0001\u0000\u0000\u0000\u0a50"+
53748 		"\u0a52\u0001\u0000\u0000\u0000\u0a51\u0a4f\u0001\u0000\u0000\u0000\u0a51"+
53749 		"\u0a52\u0001\u0000\u0000\u0000\u0a52\u0a55\u0001\u0000\u0000\u0000\u0a53"+
53750 		"\u0a54\u0005L\u0000\u0000\u0a54\u0a56\u0003\u0182\u00c1\u0000\u0a55\u0a53"+
53751 		"\u0001\u0000\u0000\u0000\u0a55\u0a56\u0001\u0000\u0000\u0000\u0a56\u0181"+
53752 		"\u0001\u0000\u0000\u0000\u0a57\u0a58\u0005\u001f\u0000\u0000\u0a58\u0a5d"+
53753 		"\u0003\u0184\u00c2\u0000\u0a59\u0a5a\u0005%\u0000\u0000\u0a5a\u0a5c\u0003"+
53754 		"\u0184\u00c2\u0000\u0a5b\u0a59\u0001\u0000\u0000\u0000\u0a5c\u0a5f\u0001"+
53755 		"\u0000\u0000\u0000\u0a5d\u0a5b\u0001\u0000\u0000\u0000\u0a5d\u0a5e\u0001"+
53756 		"\u0000\u0000\u0000\u0a5e\u0a60\u0001\u0000\u0000\u0000\u0a5f\u0a5d\u0001"+
53757 		"\u0000\u0000\u0000\u0a60\u0a61\u0005 \u0000\u0000\u0a61\u0183\u0001\u0000"+
53758 		"\u0000\u0000\u0a62\u0a63\u0005\u0184\u0000\u0000\u0a63\u0a64\u0005\u0018"+
53759 		"\u0000\u0000\u0a64\u0a6b\u0007\"\u0000\u0000\u0a65\u0a66\u0005`\u0000"+
53760 		"\u0000\u0a66\u0a67\u0005\u00db\u0000\u0000\u0a67\u0a68\u0005\u001f\u0000"+
53761 		"\u0000\u0a68\u0a69\u0003\u00c0`\u0000\u0a69\u0a6a\u0005 \u0000\u0000\u0a6a"+
53762 		"\u0a6c\u0001\u0000\u0000\u0000\u0a6b\u0a65\u0001\u0000\u0000\u0000\u0a6b"+
53763 		"\u0a6c\u0001\u0000\u0000\u0000\u0a6c\u0a95\u0001\u0000\u0000\u0000\u0a6d"+
53764 		"\u0a6e\u0005\u019a\u0000\u0000\u0a6e\u0a6f\u0005\u0018\u0000\u0000\u0a6f"+
53765 		"\u0a95\u0003\u00cae\u0000\u0a70\u0a71\u0005\u0199\u0000\u0000\u0a71\u0a74"+
53766 		"\u0005\u0018\u0000\u0000\u0a72\u0a75\u0003Z-\u0000\u0a73\u0a75\u0005\u0183"+
53767 		"\u0000\u0000\u0a74\u0a72\u0001\u0000\u0000\u0000\u0a74\u0a73\u0001\u0000"+
53768 		"\u0000\u0000\u0a75\u0a95\u0001\u0000\u0000\u0000\u0a76\u0a77\u0005\u019c"+
53769 		"\u0000\u0000\u0a77\u0a78\u0005\u0018\u0000\u0000\u0a78\u0a95\u0003\u00ca"+
53770 		"e\u0000\u0a79\u0a7a\u0005\u019d\u0000\u0000\u0a7a\u0a7b\u0005\u0018\u0000"+
53771 		"\u0000\u0a7b\u0a95\u0003\u00cae\u0000\u0a7c\u0a7d\u0005\u019b\u0000\u0000"+
53772 		"\u0a7d\u0a7e\u0005\u0018\u0000\u0000\u0a7e\u0a95\u0003\u00cae\u0000\u0a7f"+
53773 		"\u0a80\u0005\u0188\u0000\u0000\u0a80\u0a81\u0005\u0018\u0000\u0000\u0a81"+
53774 		"\u0a83\u0005`\u0000\u0000\u0a82\u0a84\u0003\u01dc\u00ee\u0000\u0a83\u0a82"+
53775 		"\u0001\u0000\u0000\u0000\u0a83\u0a84\u0001\u0000\u0000\u0000\u0a84\u0a95"+
53776 		"\u0001\u0000\u0000\u0000\u0a85\u0a86\u0005\u0197\u0000\u0000\u0a86\u0a8d"+
53777 		"\u0005\u0018\u0000\u0000\u0a87\u0a89\u0005`\u0000\u0000\u0a88\u0a8a\u0003"+
53778 		"\u0188\u00c4\u0000\u0a89\u0a88\u0001\u0000\u0000\u0000\u0a89\u0a8a\u0001"+
53779 		"\u0000\u0000\u0000\u0a8a\u0a8e\u0001\u0000\u0000\u0000\u0a8b\u0a8c\u0005"+
53780 		"\u0115\u0000\u0000\u0a8c\u0a8e\u0003\u018c\u00c6\u0000\u0a8d\u0a87\u0001"+
53781 		"\u0000\u0000\u0000\u0a8d\u0a8b\u0001\u0000\u0000\u0000\u0a8e\u0a95\u0001"+
53782 		"\u0000\u0000\u0000\u0a8f\u0a95\u0003\u018e\u00c7\u0000\u0a90\u0a95\u0003"+
53783 		"\u0190\u00c8\u0000\u0a91\u0a95\u0003\u0192\u00c9\u0000\u0a92\u0a95\u0003"+
53784 		"\u0186\u00c3\u0000\u0a93\u0a95\u0003\u0194\u00ca\u0000\u0a94\u0a62\u0001"+
53785 		"\u0000\u0000\u0000\u0a94\u0a6d\u0001\u0000\u0000\u0000\u0a94\u0a70\u0001"+
53786 		"\u0000\u0000\u0000\u0a94\u0a76\u0001\u0000\u0000\u0000\u0a94\u0a79\u0001"+
53787 		"\u0000\u0000\u0000\u0a94\u0a7c\u0001\u0000\u0000\u0000\u0a94\u0a7f\u0001"+
53788 		"\u0000\u0000\u0000\u0a94\u0a85\u0001\u0000\u0000\u0000\u0a94\u0a8f\u0001"+
53789 		"\u0000\u0000\u0000\u0a94\u0a90\u0001\u0000\u0000\u0000\u0a94\u0a91\u0001"+
53790 		"\u0000\u0000\u0000\u0a94\u0a92\u0001\u0000\u0000\u0000\u0a94\u0a93\u0001"+
53791 		"\u0000\u0000\u0000\u0a95\u0185\u0001\u0000\u0000\u0000\u0a96\u0a97\u0005"+
53792 		"\u01d9\u0000\u0000\u0a97\u0a98\u0005\u0018\u0000\u0000\u0a98\u0a99\u0005"+
53793 		"`\u0000\u0000\u0a99\u0a9a\u0005\u001f\u0000\u0000\u0a9a\u0a9b\u0005\u01da"+
53794 		"\u0000\u0000\u0a9b\u0a9c\u0005\u0018\u0000\u0000\u0a9c\u0a9d\u0003H$\u0000"+
53795 		"\u0a9d\u0a9e\u0005%\u0000\u0000\u0a9e\u0a9f\u0005\u01db\u0000\u0000\u0a9f"+
53796 		"\u0aa0\u0005\u0018\u0000\u0000\u0aa0\u0aa1\u0003\u01ce\u00e7\u0000\u0aa1"+
53797 		"\u0187\u0001\u0000\u0000\u0000\u0aa2\u0aa3\u0005\u001f\u0000\u0000\u0aa3"+
53798 		"\u0aa8\u0003\u018a\u00c5\u0000\u0aa4\u0aa5\u0005%\u0000\u0000\u0aa5\u0aa7"+
53799 		"\u0003\u018a\u00c5\u0000\u0aa6\u0aa4\u0001\u0000\u0000\u0000\u0aa7\u0aaa"+
53800 		"\u0001\u0000\u0000\u0000\u0aa8\u0aa6\u0001\u0000\u0000\u0000\u0aa8\u0aa9"+
53801 		"\u0001\u0000\u0000\u0000\u0aa9\u0aab\u0001\u0000\u0000\u0000\u0aaa\u0aa8"+
53802 		"\u0001\u0000\u0000\u0000\u0aab\u0aac\u0005 \u0000\u0000\u0aac\u0189\u0001"+
53803 		"\u0000\u0000\u0000\u0aad\u0aae\u0005\u019e\u0000\u0000\u0aae\u0ab1\u0005"+
53804 		"\u0018\u0000\u0000\u0aaf\u0ab2\u0005j\u0000\u0000\u0ab0\u0ab2\u0003t:"+
53805 		"\u0000\u0ab1\u0aaf\u0001\u0000\u0000\u0000\u0ab1\u0ab0\u0001\u0000\u0000"+
53806 		"\u0000\u0ab2\u0ab3\u0001\u0000\u0000\u0000\u0ab3\u0ab5\u0005%\u0000\u0000"+
53807 		"\u0ab4\u0aad\u0001\u0000\u0000\u0000\u0ab4\u0ab5\u0001\u0000\u0000\u0000"+
53808 		"\u0ab5\u0ab6\u0001\u0000\u0000\u0000\u0ab6\u0ab7\u0005\u0195\u0000\u0000"+
53809 		"\u0ab7\u0ab8\u0005\u0018\u0000\u0000\u0ab8\u0ab9\u0007#\u0000\u0000\u0ab9"+
53810 		"\u018b\u0001\u0000\u0000\u0000\u0aba\u0abb\u0005\u001f\u0000\u0000\u0abb"+
53811 		"\u0abc\u0005\u0195\u0000\u0000\u0abc\u0abd\u0005\u0018\u0000\u0000\u0abd"+
53812 		"\u0abe\u0005\u0119\u0000\u0000\u0abe\u0abf\u0005 \u0000\u0000\u0abf\u018d"+
53813 		"\u0001\u0000\u0000\u0000\u0ac0\u0ac1\u0005\u0194\u0000\u0000\u0ac1\u0ac2"+
53814 		"\u0005\u0018\u0000\u0000\u0ac2\u0acd\u0005`\u0000\u0000\u0ac3\u0ac4\u0005"+
53815 		"\u0100\u0000\u0000\u0ac4\u0ac5\u0005\u0018\u0000\u0000\u0ac5\u0acd\u0007"+
53816 		"$\u0000\u0000\u0ac6\u0ac7\u0005\u0188\u0000\u0000\u0ac7\u0ac8\u0005\u0018"+
53817 		"\u0000\u0000\u0ac8\u0aca\u0005`\u0000\u0000\u0ac9\u0acb\u0003\u01dc\u00ee"+
53818 		"\u0000\u0aca\u0ac9\u0001\u0000\u0000\u0000\u0aca\u0acb\u0001\u0000\u0000"+
53819 		"\u0000\u0acb\u0acd\u0001\u0000\u0000\u0000\u0acc\u0ac0\u0001\u0000\u0000"+
53820 		"\u0000\u0acc\u0ac3\u0001\u0000\u0000\u0000\u0acc\u0ac6\u0001\u0000\u0000"+
53821 		"\u0000\u0acd\u018f\u0001\u0000\u0000\u0000\u0ace\u0acf\u0005\u00fe\u0000"+
53822 		"\u0000\u0acf\u0ad7\u0005\u0018\u0000\u0000\u0ad0\u0ad1\u0005\u0107\u0000"+
53823 		"\u0000\u0ad1\u0ad2\u0005\u001f\u0000\u0000\u0ad2\u0ad3\u0003H$\u0000\u0ad3"+
53824 		"\u0ad4\u0005 \u0000\u0000\u0ad4\u0ad8\u0001\u0000\u0000\u0000\u0ad5\u0ad8"+
53825 		"\u0005\u018d\u0000\u0000\u0ad6\u0ad8\u0005\u0120\u0000\u0000\u0ad7\u0ad0"+
53826 		"\u0001\u0000\u0000\u0000\u0ad7\u0ad5\u0001\u0000\u0000\u0000\u0ad7\u0ad6"+
53827 		"\u0001\u0000\u0000\u0000\u0ad8\u0191\u0001\u0000\u0000\u0000\u0ad9\u0ada"+
53828 		"\u0005\u00f1\u0000\u0000\u0ada\u0adb\u0005\u00f4\u0000\u0000\u0adb\u0af6"+
53829 		"\u0005=\u0000\u0000\u0adc\u0add\u0005\u00f1\u0000\u0000\u0add\u0ade\u0005"+
53830 		"\u00f4\u0000\u0000\u0ade\u0adf\u0005=\u0000\u0000\u0adf\u0ae0\u0005s\u0000"+
53831 		"\u0000\u0ae0\u0af6\u0003P(\u0000\u0ae1\u0af6\u0005\u0108\u0000\u0000\u0ae2"+
53832 		"\u0ae3\u0005\u00f1\u0000\u0000\u0ae3\u0ae4\u0005=\u0000\u0000\u0ae4\u0ae5"+
53833 		"\u0005\u001f\u0000\u0000\u0ae5\u0ae7\u0003H$\u0000\u0ae6\u0ae8\u0007\u0012"+
53834 		"\u0000\u0000\u0ae7\u0ae6\u0001\u0000\u0000\u0000\u0ae7\u0ae8\u0001\u0000"+
53835 		"\u0000\u0000\u0ae8\u0af0\u0001\u0000\u0000\u0000\u0ae9\u0aea\u0005%\u0000"+
53836 		"\u0000\u0aea\u0aec\u0003H$\u0000\u0aeb\u0aed\u0007\u0012\u0000\u0000\u0aec"+
53837 		"\u0aeb\u0001\u0000\u0000\u0000\u0aec\u0aed\u0001\u0000\u0000\u0000\u0aed"+
53838 		"\u0aef\u0001\u0000\u0000\u0000\u0aee\u0ae9\u0001\u0000\u0000\u0000\u0aef"+
53839 		"\u0af2\u0001\u0000\u0000\u0000\u0af0\u0aee\u0001\u0000\u0000\u0000\u0af0"+
53840 		"\u0af1\u0001\u0000\u0000\u0000\u0af1\u0af3\u0001\u0000\u0000\u0000\u0af2"+
53841 		"\u0af0\u0001\u0000\u0000\u0000\u0af3\u0af4\u0005 \u0000\u0000\u0af4\u0af6"+
53842 		"\u0001\u0000\u0000\u0000\u0af5\u0ad9\u0001\u0000\u0000\u0000\u0af5\u0adc"+
53843 		"\u0001\u0000\u0000\u0000\u0af5\u0ae1\u0001\u0000\u0000\u0000\u0af5\u0ae2"+
53844 		"\u0001\u0000\u0000\u0000\u0af6\u0193\u0001\u0000\u0000\u0000\u0af7\u0af8"+
53845 		"\u0005\u00da\u0000\u0000\u0af8\u0af9\u0005\u001f\u0000\u0000\u0af9\u0afa"+
53846 		"\u0003H$\u0000\u0afa\u0afc\u0005\u011e\u0000\u0000\u0afb\u0afd\u0007%"+
53847 		"\u0000\u0000\u0afc\u0afb\u0001\u0000\u0000\u0000\u0afc\u0afd\u0001\u0000"+
53848 		"\u0000\u0000\u0afd\u0afe\u0001\u0000\u0000\u0000\u0afe\u0aff\u0005d\u0000"+
53849 		"\u0000\u0aff\u0b00\u0005K\u0000\u0000\u0b00\u0b01\u0005\u001f\u0000\u0000"+
53850 		"\u0b01\u0b06\u0003r9\u0000\u0b02\u0b03\u0005%\u0000\u0000\u0b03\u0b05"+
53851 		"\u0003r9\u0000\u0b04\u0b02\u0001\u0000\u0000\u0000\u0b05\u0b08\u0001\u0000"+
53852 		"\u0000\u0000\u0b06\u0b04\u0001\u0000\u0000\u0000\u0b06\u0b07\u0001\u0000"+
53853 		"\u0000\u0000\u0b07\u0b09\u0001\u0000\u0000\u0000\u0b08\u0b06\u0001\u0000"+
53854 		"\u0000\u0000\u0b09\u0b0a\u0005 \u0000\u0000\u0b0a\u0b0b\u0005 \u0000\u0000"+
53855 		"\u0b0b\u0195\u0001\u0000\u0000\u0000\u0b0c\u0b0e\u0005@\u0000\u0000\u0b0d"+
53856 		"\u0b0c\u0001\u0000\u0000\u0000\u0b0d\u0b0e\u0001\u0000\u0000\u0000\u0b0e"+
53857 		"\u0b10\u0001\u0000\u0000\u0000\u0b0f\u0b11\u0003\u0140\u00a0\u0000\u0b10"+
53858 		"\u0b0f\u0001\u0000\u0000\u0000\u0b10\u0b11\u0001\u0000\u0000\u0000\u0b11"+
53859 		"\u0197\u0001\u0000\u0000\u0000\u0b12\u0b1c\u0003\u019a\u00cd\u0000\u0b13"+
53860 		"\u0b1c\u0003\u019c\u00ce\u0000\u0b14\u0b1c\u0003\u01ac\u00d6\u0000\u0b15"+
53861 		"\u0b1c\u0003\u01bc\u00de\u0000\u0b16\u0b1c\u0003\u01be\u00df\u0000\u0b17"+
53862 		"\u0b1c\u0003\u01c0\u00e0\u0000\u0b18\u0b1c\u0003\u01c2\u00e1\u0000\u0b19"+
53863 		"\u0b1c\u0003\u01da\u00ed\u0000\u0b1a\u0b1c\u0005\u011f\u0000\u0000\u0b1b"+
53864 		"\u0b12\u0001\u0000\u0000\u0000\u0b1b\u0b13\u0001\u0000\u0000\u0000\u0b1b"+
53865 		"\u0b14\u0001\u0000\u0000\u0000\u0b1b\u0b15\u0001\u0000\u0000\u0000\u0b1b"+
53866 		"\u0b16\u0001\u0000\u0000\u0000\u0b1b\u0b17\u0001\u0000\u0000\u0000\u0b1b"+
53867 		"\u0b18\u0001\u0000\u0000\u0000\u0b1b\u0b19\u0001\u0000\u0000\u0000\u0b1b"+
53868 		"\u0b1a\u0001\u0000\u0000\u0000\u0b1c\u0199\u0001\u0000\u0000\u0000\u0b1d"+
53869 		"\u0b1e\u0005L\u0000\u0000\u0b1e\u0b20\u0007&\u0000\u0000\u0b1f\u0b1d\u0001"+
53870 		"\u0000\u0000\u0000\u0b1f\u0b20\u0001\u0000\u0000\u0000\u0b20\u0b21\u0001"+
53871 		"\u0000\u0000\u0000\u0b21\u0b24\u00059\u0000\u0000\u0b22\u0b25\u0003\u01a0"+
53872 		"\u00d0\u0000\u0b23\u0b25\u0003\u01a6\u00d3\u0000\u0b24\u0b22\u0001\u0000"+
53873 		"\u0000\u0000\u0b24\u0b23\u0001\u0000\u0000\u0000\u0b25\u019b\u0001\u0000"+
53874 		"\u0000\u0000\u0b26\u0b27\u0003\u019e\u00cf\u0000\u0b27\u0b2a\u0003\u0094"+
53875 		"J\u0000\u0b28\u0b29\u0005\u00f3\u0000\u0000\u0b29\u0b2b\u0003Z-\u0000"+
53876 		"\u0b2a\u0b28\u0001\u0000\u0000\u0000\u0b2a\u0b2b\u0001\u0000\u0000\u0000"+
53877 		"\u0b2b\u0b2f\u0001\u0000\u0000\u0000\u0b2c\u0b30\u0005j\u0000\u0000\u0b2d"+
53878 		"\u0b2e\u0005i\u0000\u0000\u0b2e\u0b30\u0005j\u0000\u0000\u0b2f\u0b2c\u0001"+
53879 		"\u0000\u0000\u0000\u0b2f\u0b2d\u0001\u0000\u0000\u0000\u0b2f\u0b30\u0001"+
53880 		"\u0000\u0000\u0000\u0b30\u0b32\u0001\u0000\u0000\u0000\u0b31\u0b33\u0005"+
53881 		"\u0126\u0000\u0000\u0b32\u0b31\u0001\u0000\u0000\u0000\u0b32\u0b33\u0001"+
53882 		"\u0000\u0000\u0000\u0b33\u019d\u0001\u0000\u0000\u0000\u0b34\u0b35\u0005"+
53883 		"3\u0000\u0000\u0b35\u0b36\u0005<\u0000\u0000\u0b36\u0b37\u0003H$\u0000"+
53884 		"\u0b37\u019f\u0001\u0000\u0000\u0000\u0b38\u0b3d\u0003\u01a2\u00d1\u0000"+
53885 		"\u0b39\u0b3a\u0005%\u0000\u0000\u0b3a\u0b3c\u0003\u01a2\u00d1\u0000\u0b3b"+
53886 		"\u0b39\u0001\u0000\u0000\u0000\u0b3c\u0b3f\u0001\u0000\u0000\u0000\u0b3d"+
53887 		"\u0b3b\u0001\u0000\u0000\u0000\u0b3d\u0b3e\u0001\u0000\u0000\u0000\u0b3e"+
53888 		"\u01a1\u0001\u0000\u0000\u0000\u0b3f\u0b3d\u0001\u0000\u0000\u0000\u0b40"+
53889 		"\u0b47\u0003\u012e\u0097\u0000\u0b41\u0b47\u0003\u0164\u00b2\u0000\u0b42"+
53890 		"\u0b47\u0003\u0166\u00b3\u0000\u0b43\u0b47\u0003\u0168\u00b4\u0000\u0b44"+
53891 		"\u0b47\u0003\u01d0\u00e8\u0000\u0b45\u0b47\u0003\u01a4\u00d2\u0000\u0b46"+
53892 		"\u0b40\u0001\u0000\u0000\u0000\u0b46\u0b41\u0001\u0000\u0000\u0000\u0b46"+
53893 		"\u0b42\u0001\u0000\u0000\u0000\u0b46\u0b43\u0001\u0000\u0000\u0000\u0b46"+
53894 		"\u0b44\u0001\u0000\u0000\u0000\u0b46\u0b45\u0001\u0000\u0000\u0000\u0b47"+
53895 		"\u01a3\u0001\u0000\u0000\u0000\u0b48\u0b49\u0005>\u0000\u0000\u0b49\u0b4b"+
53896 		"\u0003X,\u0000\u0b4a\u0b48\u0001\u0000\u0000\u0000\u0b4a\u0b4b\u0001\u0000"+
53897 		"\u0000\u0000\u0b4b\u0b4c\u0001\u0000\u0000\u0000\u0b4c\u0b4d\u0005\u0098"+
53898 		"\u0000\u0000\u0b4d\u0b4e\u0003r9\u0000\u0b4e\u0b4f\u0005d\u0000\u0000"+
53899 		"\u0b4f\u0b50\u0003H$\u0000\u0b50\u01a5\u0001\u0000\u0000\u0000\u0b51\u0b52"+
53900 		"\u0003\u01a8\u00d4\u0000\u0b52\u0b53\u0005%\u0000\u0000\u0b53\u0b54\u0003"+
53901 		"\u017c\u00be\u0000\u0b54\u0b5a\u0001\u0000\u0000\u0000\u0b55\u0b56\u0003"+
53902 		"\u017c\u00be\u0000\u0b56\u0b57\u0005%\u0000\u0000\u0b57\u0b58\u0003\u01a8"+
53903 		"\u00d4\u0000\u0b58\u0b5a\u0001\u0000\u0000\u0000\u0b59\u0b51\u0001\u0000"+
53904 		"\u0000\u0000\u0b59\u0b55\u0001\u0000\u0000\u0000\u0b5a\u01a7\u0001\u0000"+
53905 		"\u0000\u0000\u0b5b\u0b5c\u0003\u01aa\u00d5\u0000\u0b5c\u0b5d\u0005\u0098"+
53906 		"\u0000\u0000\u0b5d\u0b60\u0003r9\u0000\u0b5e\u0b5f\u0005L\u0000\u0000"+
53907 		"\u0b5f\u0b61\u0005K\u0000\u0000\u0b60\u0b5e\u0001\u0000\u0000\u0000\u0b60"+
53908 		"\u0b61\u0001\u0000\u0000\u0000\u0b61\u0b62\u0001\u0000\u0000\u0000\u0b62"+
53909 		"\u0b63\u0005%\u0000\u0000\u0b63\u0b64\u0003\u01aa\u00d5\u0000\u0b64\u01a9"+
53910 		"\u0001\u0000\u0000\u0000\u0b65\u0b66\u0003H$\u0000\u0b66\u0b67\u0003\u0096"+
53911 		"K\u0000\u0b67\u0b68\u0005\u00e4\u0000\u0000\u0b68\u0b69\u0005\u00e1\u0000"+
53912 		"\u0000\u0b69\u0b6a\u0005_\u0000\u0000\u0b6a\u0b6c\u0005\u00dd\u0000\u0000"+
53913 		"\u0b6b\u0b6d\u0007\u001d\u0000\u0000\u0b6c\u0b6b\u0001\u0000\u0000\u0000"+
53914 		"\u0b6c\u0b6d\u0001\u0000\u0000\u0000\u0b6d\u0b6f\u0001\u0000\u0000\u0000"+
53915 		"\u0b6e\u0b70\u0005\u00d8\u0000\u0000\u0b6f\u0b6e\u0001\u0000\u0000\u0000"+
53916 		"\u0b6f\u0b70\u0001\u0000\u0000\u0000\u0b70\u0b73\u0001\u0000\u0000\u0000"+
53917 		"\u0b71\u0b72\u0005i\u0000\u0000\u0b72\u0b74\u0005j\u0000\u0000\u0b73\u0b71"+
53918 		"\u0001\u0000\u0000\u0000\u0b73\u0b74\u0001\u0000\u0000\u0000\u0b74\u0b77"+
53919 		"\u0001\u0000\u0000\u0000\u0b75\u0b76\u0005>\u0000\u0000\u0b76\u0b78\u0003"+
53920 		"\u00cae\u0000\u0b77\u0b75\u0001\u0000\u0000\u0000\u0b77\u0b78\u0001\u0000"+
53921 		"\u0000\u0000\u0b78\u01ab\u0001\u0000\u0000\u0000\u0b79\u0b80\u00054\u0000"+
53922 		"\u0000\u0b7a\u0b81\u0003\u01ae\u00d7\u0000\u0b7b\u0b81\u0003\u01b8\u00dc"+
53923 		"\u0000\u0b7c\u0b81\u0003\u01ba\u00dd\u0000\u0b7d\u0b7e\u0005\u011a\u0000"+
53924 		"\u0000\u0b7e\u0b7f\u0005d\u0000\u0000\u0b7f\u0b81\u0005\u0187\u0000\u0000"+
53925 		"\u0b80\u0b7a\u0001\u0000\u0000\u0000\u0b80\u0b7b\u0001\u0000\u0000\u0000"+
53926 		"\u0b80\u0b7c\u0001\u0000\u0000\u0000\u0b80\u0b7d\u0001\u0000\u0000\u0000"+
53927 		"\u0b81\u01ad\u0001\u0000\u0000\u0000\u0b82\u0b84\u0005>\u0000\u0000\u0b83"+
53928 		"\u0b82\u0001\u0000\u0000\u0000\u0b83\u0b84\u0001\u0000\u0000\u0000\u0b84"+
53929 		"\u0b86\u0001\u0000\u0000\u0000\u0b85\u0b87\u0003\u00deo\u0000\u0b86\u0b85"+
53930 		"\u0001\u0000\u0000\u0000\u0b86\u0b87\u0001\u0000\u0000\u0000\u0b87\u0b88"+
53931 		"\u0001\u0000\u0000\u0000\u0b88\u0b8d\u0003\u01b0\u00d8\u0000\u0b89\u0b8a"+
53932 		"\u0005%\u0000\u0000\u0b8a\u0b8c\u0003\u01b0\u00d8\u0000\u0b8b\u0b89\u0001"+
53933 		"\u0000\u0000\u0000\u0b8c\u0b8f\u0001\u0000\u0000\u0000\u0b8d\u0b8b\u0001"+
53934 		"\u0000\u0000\u0000\u0b8d\u0b8e\u0001\u0000\u0000\u0000\u0b8e\u01af\u0001"+
53935 		"\u0000\u0000\u0000\u0b8f\u0b8d\u0001\u0000\u0000\u0000\u0b90\u0b92\u0003"+
53936 		"X,\u0000\u0b91\u0b93\u0003\u01b2\u00d9\u0000\u0b92\u0b91\u0001\u0000\u0000"+
53937 		"\u0000\u0b92\u0b93\u0001\u0000\u0000\u0000\u0b93\u01b1\u0001\u0000\u0000"+
53938 		"\u0000\u0b94\u0b95\u0005L\u0000\u0000\u0b95\u0b96\u0005\u001f\u0000\u0000"+
53939 		"\u0b96\u0b9b\u0003\u01b4\u00da\u0000\u0b97\u0b98\u0005%\u0000\u0000\u0b98"+
53940 		"\u0b9a\u0003\u01b4\u00da\u0000\u0b99\u0b97\u0001\u0000\u0000\u0000\u0b9a"+
53941 		"\u0b9d\u0001\u0000\u0000\u0000\u0b9b\u0b99\u0001\u0000\u0000\u0000\u0b9b"+
53942 		"\u0b9c\u0001\u0000\u0000\u0000\u0b9c\u0b9e\u0001\u0000\u0000\u0000\u0b9d"+
53943 		"\u0b9b\u0001\u0000\u0000\u0000\u0b9e\u0b9f\u0005 \u0000\u0000\u0b9f\u01b3"+
53944 		"\u0001\u0000\u0000\u0000\u0ba0\u0ba1\u0005\u0110\u0000\u0000\u0ba1\u0ba2"+
53945 		"\u0005\u0018\u0000\u0000\u0ba2\u0bb2\u0005\u02af\u0000\u0000\u0ba3\u0ba4"+
53946 		"\u0005\u0116\u0000\u0000\u0ba4\u0ba5\u0005\u0018\u0000\u0000\u0ba5\u0bb2"+
53947 		"\u0003\u01b6\u00db\u0000\u0ba6\u0ba7\u0005\u0111\u0000\u0000\u0ba7\u0baf"+
53948 		"\u0005e\u0000\u0000\u0ba8\u0ba9\u00034\u001a\u0000\u0ba9\u0baa\u0005\u001f"+
53949 		"\u0000\u0000\u0baa\u0bab\u0003H$\u0000\u0bab\u0bac\u0005 \u0000\u0000"+
53950 		"\u0bac\u0bb0\u0001\u0000\u0000\u0000\u0bad\u0bb0\u0003\u00cae\u0000\u0bae"+
53951 		"\u0bb0\u0005\u02ae\u0000\u0000\u0baf\u0ba8\u0001\u0000\u0000\u0000\u0baf"+
53952 		"\u0bad\u0001\u0000\u0000\u0000\u0baf\u0bae\u0001\u0000\u0000\u0000\u0bb0"+
53953 		"\u0bb2\u0001\u0000\u0000\u0000\u0bb1\u0ba0\u0001\u0000\u0000\u0000\u0bb1"+
53954 		"\u0ba3\u0001\u0000\u0000\u0000\u0bb1\u0ba6\u0001\u0000\u0000\u0000\u0bb2"+
53955 		"\u01b5\u0001\u0000\u0000\u0000\u0bb3\u0bb4\u0007\u0000\u0000\u0000\u0bb4"+
53956 		"\u01b7\u0001\u0000\u0000\u0000\u0bb5\u0bb7\u0005<\u0000\u0000\u0bb6\u0bb8"+
53957 		"\u0003\u00deo\u0000\u0bb7\u0bb6\u0001\u0000\u0000\u0000\u0bb7\u0bb8\u0001"+
53958 		"\u0000\u0000\u0000\u0bb8\u0bb9\u0001\u0000\u0000\u0000\u0bb9\u0bbe\u0003"+
53959 		"H$\u0000\u0bba\u0bbb\u0005%\u0000\u0000\u0bbb\u0bbd\u0003H$\u0000\u0bbc"+
53960 		"\u0bba\u0001\u0000\u0000\u0000\u0bbd\u0bc0\u0001\u0000\u0000\u0000\u0bbe"+
53961 		"\u0bbc\u0001\u0000\u0000\u0000\u0bbe\u0bbf\u0001\u0000\u0000\u0000\u0bbf"+
53962 		"\u01b9\u0001\u0000\u0000\u0000\u0bc0\u0bbe\u0001\u0000\u0000\u0000\u0bc1"+
53963 		"\u0bc3\u0005=\u0000\u0000\u0bc2\u0bc4\u0003\u00deo\u0000\u0bc3\u0bc2\u0001"+
53964 		"\u0000\u0000\u0000\u0bc3\u0bc4\u0001\u0000\u0000\u0000\u0bc4\u0bc5\u0001"+
53965 		"\u0000\u0000\u0000\u0bc5\u0bca\u0003V+\u0000\u0bc6\u0bc7\u0005%\u0000"+
53966 		"\u0000\u0bc7\u0bc9\u0003V+\u0000\u0bc8\u0bc6\u0001\u0000\u0000\u0000\u0bc9"+
53967 		"\u0bcc\u0001\u0000\u0000\u0000\u0bca\u0bc8\u0001\u0000\u0000\u0000\u0bca"+
53968 		"\u0bcb\u0001\u0000\u0000\u0000\u0bcb\u01bb\u0001\u0000\u0000\u0000\u0bcc"+
53969 		"\u0bca\u0001\u0000\u0000\u0000\u0bcd\u0bcf\u0005L\u0000\u0000\u0bce\u0bcd"+
53970 		"\u0001\u0000\u0000\u0000\u0bce\u0bcf\u0001\u0000\u0000\u0000\u0bcf\u0bd0"+
53971 		"\u0001\u0000\u0000\u0000\u0bd0\u0bd1\u0007&\u0000\u0000\u0bd1\u0bd4\u0005"+
53972 		">\u0000\u0000\u0bd2\u0bd5\u0005p\u0000\u0000\u0bd3\u0bd5\u0003X,\u0000"+
53973 		"\u0bd4\u0bd2\u0001\u0000\u0000\u0000\u0bd4\u0bd3\u0001\u0000\u0000\u0000"+
53974 		"\u0bd5\u01bd\u0001\u0000\u0000\u0000\u0bd6\u0bd7\u0007\'\u0000\u0000\u0bd7"+
53975 		"\u0bda\u0005F\u0000\u0000\u0bd8\u0bdb\u0005p\u0000\u0000\u0bd9\u0bdb\u0003"+
53976 		"\u00ccf\u0000\u0bda\u0bd8\u0001\u0000\u0000\u0000\u0bda\u0bd9\u0001\u0000"+
53977 		"\u0000\u0000\u0bdb\u01bf\u0001\u0000\u0000\u0000\u0bdc\u0bdf\u0005\u0127"+
53978 		"\u0000\u0000\u0bdd\u0bde\u0005\u00da\u0000\u0000\u0bde\u0be0\u0003b1\u0000"+
53979 		"\u0bdf\u0bdd\u0001\u0000\u0000\u0000\u0bdf\u0be0\u0001\u0000\u0000\u0000"+
53980 		"\u0be0\u0be1\u0001\u0000\u0000\u0000\u0be1\u0be2\u0005e\u0000\u0000\u0be2"+
53981 		"\u0be5\u0003@ \u0000\u0be3\u0be4\u0005\u00da\u0000\u0000\u0be4\u0be6\u0003"+
53982 		"b1\u0000\u0be5\u0be3\u0001\u0000\u0000\u0000\u0be5\u0be6\u0001\u0000\u0000"+
53983 		"\u0000\u0be6\u0bec\u0001\u0000\u0000\u0000\u0be7\u0be8\u0005L\u0000\u0000"+
53984 		"\u0be8\u0be9\u0005\u001f\u0000\u0000\u0be9\u0bea\u0003\u00c6c\u0000\u0bea"+
53985 		"\u0beb\u0005 \u0000\u0000\u0beb\u0bed\u0001\u0000\u0000\u0000\u0bec\u0be7"+
53986 		"\u0001\u0000\u0000\u0000\u0bec\u0bed\u0001\u0000\u0000\u0000\u0bed\u01c1"+
53987 		"\u0001\u0000\u0000\u0000\u0bee\u0bef\u0005:\u0000\u0000\u0bef\u0bf2\u0005"+
53988 		"\u001f\u0000\u0000\u0bf0\u0bf3\u0003\u01c4\u00e2\u0000\u0bf1\u0bf3\u0003"+
53989 		"\u01c6\u00e3\u0000\u0bf2\u0bf0\u0001\u0000\u0000\u0000\u0bf2\u0bf1\u0001"+
53990 		"\u0000\u0000\u0000\u0bf3\u0bf4\u0001\u0000\u0000\u0000\u0bf4\u0bf5\u0005"+
53991 		" \u0000\u0000\u0bf5\u01c3\u0001\u0000\u0000\u0000\u0bf6\u0bf7\u0005\u0198"+
53992 		"\u0000\u0000\u0bf7\u0bfb\u0005\u0018\u0000\u0000\u0bf8\u0bfc\u00034\u001a"+
53993 		"\u0000\u0bf9\u0bfc\u0003\u00cae\u0000\u0bfa\u0bfc\u0005\u02ae\u0000\u0000"+
53994 		"\u0bfb\u0bf8\u0001\u0000\u0000\u0000\u0bfb\u0bf9\u0001\u0000\u0000\u0000"+
53995 		"\u0bfb\u0bfa\u0001\u0000\u0000\u0000\u0bfc\u01c5\u0001\u0000\u0000\u0000"+
53996 		"\u0bfd\u0bfe\u0005\u0188\u0000\u0000\u0bfe\u0c04\u0005\u0018\u0000\u0000"+
53997 		"\u0bff\u0c05\u0005\u0115\u0000\u0000\u0c00\u0c02\u0005`\u0000\u0000\u0c01"+
53998 		"\u0c03\u0003\u01c8\u00e4\u0000\u0c02\u0c01\u0001\u0000\u0000\u0000\u0c02"+
53999 		"\u0c03\u0001\u0000\u0000\u0000\u0c03\u0c05\u0001\u0000\u0000\u0000\u0c04"+
54000 		"\u0bff\u0001\u0000\u0000\u0000\u0c04\u0c00\u0001\u0000\u0000\u0000\u0c05"+
54001 		"\u01c7\u0001\u0000\u0000\u0000\u0c06\u0c0a\u0005\u001f\u0000\u0000\u0c07"+
54002 		"\u0c08\u0005\u01a0\u0000\u0000\u0c08\u0c09\u0005\u0018\u0000\u0000\u0c09"+
54003 		"\u0c0b\u0003@ \u0000\u0c0a\u0c07\u0001\u0000\u0000\u0000\u0c0a\u0c0b\u0001"+
54004 		"\u0000\u0000\u0000\u0c0b\u0c0d\u0001\u0000\u0000\u0000\u0c0c\u0c0e\u0003"+
54005 		"\u01ca\u00e5\u0000\u0c0d\u0c0c\u0001\u0000\u0000\u0000\u0c0d\u0c0e\u0001"+
54006 		"\u0000\u0000\u0000\u0c0e\u0c10\u0001\u0000\u0000\u0000\u0c0f\u0c11\u0003"+
54007 		"\u01cc\u00e6\u0000\u0c10\u0c0f\u0001\u0000\u0000\u0000\u0c10\u0c11\u0001"+
54008 		"\u0000\u0000\u0000\u0c11\u0c12\u0001\u0000\u0000\u0000\u0c12\u0c13\u0005"+
54009 		" \u0000\u0000\u0c13\u01c9\u0001\u0000\u0000\u0000\u0c14\u0c16\u0005%\u0000"+
54010 		"\u0000\u0c15\u0c14\u0001\u0000\u0000\u0000\u0c15\u0c16\u0001\u0000\u0000"+
54011 		"\u0000\u0c16\u0c17\u0001\u0000\u0000\u0000\u0c17\u0c18\u0005\u0185\u0000"+
54012 		"\u0000\u0c18\u0c19\u0005\u0018\u0000\u0000\u0c19\u0c1a\u0003\u01b6\u00db"+
54013 		"\u0000\u0c1a\u01cb\u0001\u0000\u0000\u0000\u0c1b\u0c1d\u0005%\u0000\u0000"+
54014 		"\u0c1c\u0c1b\u0001\u0000\u0000\u0000\u0c1c\u0c1d\u0001\u0000\u0000\u0000"+
54015 		"\u0c1d\u0c1e\u0001\u0000\u0000\u0000\u0c1e\u0c1f\u0005\u019f\u0000\u0000"+
54016 		"\u0c1f\u0c20\u0005\u0018\u0000\u0000\u0c20\u0c21\u0003\u01ce\u00e7\u0000"+
54017 		"\u0c21\u01cd\u0001\u0000\u0000\u0000\u0c22\u0c26\u0005\u010d\u0000\u0000"+
54018 		"\u0c23\u0c24\u0005\u02af\u0000\u0000\u0c24\u0c26\u0007(\u0000\u0000\u0c25"+
54019 		"\u0c22\u0001\u0000\u0000\u0000\u0c25\u0c23\u0001\u0000\u0000\u0000\u0c26"+
54020 		"\u01cf\u0001\u0000\u0000\u0000\u0c27\u0c2a\u0003\u01d2\u00e9\u0000\u0c28"+
54021 		"\u0c2b\u0003\u01d4\u00ea\u0000\u0c29\u0c2b\u0003\u01d8\u00ec\u0000\u0c2a"+
54022 		"\u0c28\u0001\u0000\u0000\u0000\u0c2a\u0c29\u0001\u0000\u0000\u0000\u0c2b"+
54023 		"\u01d1\u0001\u0000\u0000\u0000\u0c2c\u0c2d\u0005=\u0000\u0000\u0c2d\u0c2e"+
54024 		"\u0003V+\u0000\u0c2e\u01d3\u0001\u0000\u0000\u0000\u0c2f\u0c35\u0005\u00f2"+
54025 		"\u0000\u0000\u0c30\u0c36\u0003\u0172\u00b9\u0000\u0c31\u0c33\u0003R)\u0000"+
54026 		"\u0c32\u0c34\u0003\u01d6\u00eb\u0000\u0c33\u0c32\u0001\u0000\u0000\u0000"+
54027 		"\u0c33\u0c34\u0001\u0000\u0000\u0000\u0c34\u0c36\u0001\u0000\u0000\u0000"+
54028 		"\u0c35\u0c30\u0001\u0000\u0000\u0000\u0c35\u0c31\u0001\u0000\u0000\u0000"+
54029 		"\u0c36\u01d5\u0001\u0000\u0000\u0000\u0c37\u0c38\u0005`\u0000\u0000\u0c38"+
54030 		"\u0c3b\u0003\u00cae\u0000\u0c39\u0c3b\u0005\u0098\u0000\u0000\u0c3a\u0c37"+
54031 		"\u0001\u0000\u0000\u0000\u0c3a\u0c39\u0001\u0000\u0000\u0000\u0c3b\u01d7"+
54032 		"\u0001\u0000\u0000\u0000\u0c3c\u0c3d\u0005\u00f1\u0000\u0000\u0c3d\u0c45"+
54033 		"\u0005\u00f4\u0000\u0000\u0c3e\u0c3f\u0005L\u0000\u0000\u0c3f\u0c40\u0005"+
54034 		"\u0182\u0000\u0000\u0c40\u0c41\u0005\u0018\u0000\u0000\u0c41\u0c43\u0005"+
54035 		"\u02af\u0000\u0000\u0c42\u0c44\u0005\u00fb\u0000\u0000\u0c43\u0c42\u0001"+
54036 		"\u0000\u0000\u0000\u0c43\u0c44\u0001\u0000\u0000\u0000\u0c44\u0c46\u0001"+
54037 		"\u0000\u0000\u0000\u0c45\u0c3e\u0001\u0000\u0000\u0000\u0c45\u0c46\u0001"+
54038 		"\u0000\u0000\u0000\u0c46\u0c48\u0001\u0000\u0000\u0000\u0c47\u0c49\u0003"+
54039 		"\u015c\u00ae\u0000\u0c48\u0c47\u0001\u0000\u0000\u0000\u0c48\u0c49\u0001"+
54040 		"\u0000\u0000\u0000\u0c49\u01d9\u0001\u0000\u0000\u0000\u0c4a\u0c4b\u0005"+
54041 		":\u0000\u0000\u0c4b\u0c4c\u0005\u001f\u0000\u0000\u0c4c\u0c4d\u0005\u01a1"+
54042 		"\u0000\u0000\u0c4d\u0c4e\u0005\u0018\u0000\u0000\u0c4e\u0c4f\u0007)\u0000"+
54043 		"\u0000\u0c4f\u0c5d\u0005 \u0000\u0000\u0c50\u0c51\u0005\u0194\u0000\u0000"+
54044 		"\u0c51\u0c52\u0005\u0018\u0000\u0000\u0c52\u0c5d\u0005`\u0000\u0000\u0c53"+
54045 		"\u0c54\u0005\u0100\u0000\u0000\u0c54\u0c55\u0005\u0018\u0000\u0000\u0c55"+
54046 		"\u0c5d\u0007$\u0000\u0000\u0c56\u0c57\u0005\u0188\u0000\u0000\u0c57\u0c58"+
54047 		"\u0005\u0018\u0000\u0000\u0c58\u0c5a\u0005`\u0000\u0000\u0c59\u0c5b\u0003"+
54048 		"\u01dc\u00ee\u0000\u0c5a\u0c59\u0001\u0000\u0000\u0000\u0c5a\u0c5b\u0001"+
54049 		"\u0000\u0000\u0000\u0c5b\u0c5d\u0001\u0000\u0000\u0000\u0c5c\u0c4a\u0001"+
54050 		"\u0000\u0000\u0000\u0c5c\u0c50\u0001\u0000\u0000\u0000\u0c5c\u0c53\u0001"+
54051 		"\u0000\u0000\u0000\u0c5c\u0c56\u0001\u0000\u0000\u0000\u0c5d\u01db\u0001"+
54052 		"\u0000\u0000\u0000\u0c5e\u0c5f\u0005\u001f\u0000\u0000\u0c5f\u0c60\u0005"+
54053 		"\u01a0\u0000\u0000\u0c60\u0c61\u0005\u0018\u0000\u0000\u0c61\u0c66\u0003"+
54054 		"@ \u0000\u0c62\u0c63\u0005%\u0000\u0000\u0c63\u0c64\u0005\u0185\u0000"+
54055 		"\u0000\u0c64\u0c65\u0005\u0018\u0000\u0000\u0c65\u0c67\u0003\u01b6\u00db"+
54056 		"\u0000\u0c66\u0c62\u0001\u0000\u0000\u0000\u0c66\u0c67\u0001\u0000\u0000"+
54057 		"\u0000\u0c67\u0c68\u0001\u0000\u0000\u0000\u0c68\u0c69\u0005 \u0000\u0000"+
54058 		"\u0c69\u01dd\u0001\u0000\u0000\u0000\u0c6a\u0c6b\u0005\u01dc\u0000\u0000"+
54059 		"\u0c6b\u0c6c\u0005\u0018\u0000\u0000\u0c6c\u0c6e\u0007*\u0000\u0000\u0c6d"+
54060 		"\u0c6a\u0001\u0000\u0000\u0000\u0c6d\u0c6e\u0001\u0000\u0000\u0000\u0c6e"+
54061 		"\u0c70\u0001\u0000\u0000\u0000\u0c6f\u0c71\u0003\u01e0\u00f0\u0000\u0c70"+
54062 		"\u0c6f\u0001\u0000\u0000\u0000\u0c70\u0c71\u0001\u0000\u0000\u0000\u0c71"+
54063 		"\u0c74\u0001\u0000\u0000\u0000\u0c72\u0c73\u0005\u00f3\u0000\u0000\u0c73"+
54064 		"\u0c75\u0003\u00cae\u0000\u0c74\u0c72\u0001\u0000\u0000\u0000\u0c74\u0c75"+
54065 		"\u0001\u0000\u0000\u0000\u0c75\u0c7f\u0001\u0000\u0000\u0000\u0c76\u0c77"+
54066 		"\u0005L\u0000\u0000\u0c77\u0c7c\u0003\u01e2\u00f1\u0000\u0c78\u0c79\u0005"+
54067 		"%\u0000\u0000\u0c79\u0c7b\u0003\u01e2\u00f1\u0000\u0c7a\u0c78\u0001\u0000"+
54068 		"\u0000\u0000\u0c7b\u0c7e\u0001\u0000\u0000\u0000\u0c7c\u0c7a\u0001\u0000"+
54069 		"\u0000\u0000\u0c7c\u0c7d\u0001\u0000\u0000\u0000\u0c7d\u0c80\u0001\u0000"+
54070 		"\u0000\u0000\u0c7e\u0c7c\u0001\u0000\u0000\u0000\u0c7f\u0c76\u0001\u0000"+
54071 		"\u0000\u0000\u0c7f\u0c80\u0001\u0000\u0000\u0000\u0c80\u01df\u0001\u0000"+
54072 		"\u0000\u0000\u0c81\u0c83\u0005`\u0000\u0000\u0c82\u0c84\u0005?\u0000\u0000"+
54073 		"\u0c83\u0c82\u0001\u0000\u0000\u0000\u0c83\u0c84\u0001\u0000\u0000\u0000"+
54074 		"\u0c84\u0c85\u0001\u0000\u0000\u0000\u0c85\u0c8a\u0003\u01e6\u00f3\u0000"+
54075 		"\u0c86\u0c87\u0005%\u0000\u0000\u0c87\u0c89\u0003\u01e6\u00f3\u0000\u0c88"+
54076 		"\u0c86\u0001\u0000\u0000\u0000\u0c89\u0c8c\u0001\u0000\u0000\u0000\u0c8a"+
54077 		"\u0c88\u0001\u0000\u0000\u0000\u0c8a\u0c8b\u0001\u0000\u0000\u0000\u0c8b"+
54078 		"\u0c91\u0001\u0000\u0000\u0000\u0c8c\u0c8a\u0001\u0000\u0000\u0000\u0c8d"+
54079 		"\u0c8e\u0005%\u0000\u0000\u0c8e\u0c90\u0003\u01ea\u00f5\u0000\u0c8f\u0c8d"+
54080 		"\u0001\u0000\u0000\u0000\u0c90\u0c93\u0001\u0000\u0000\u0000\u0c91\u0c8f"+
54081 		"\u0001\u0000\u0000\u0000\u0c91\u0c92\u0001\u0000\u0000\u0000\u0c92\u0c94"+
54082 		"\u0001\u0000\u0000\u0000\u0c93\u0c91\u0001\u0000\u0000\u0000\u0c94\u0c95"+
54083 		"\u0003\u01ee\u00f7\u0000\u0c95\u01e1\u0001\u0000\u0000\u0000\u0c96\u0c97"+
54084 		"\u0005\u0103\u0000\u0000\u0c97\u0c9c\u0003\u01e4\u00f2\u0000\u0c98\u0c99"+
54085 		"\u0005%\u0000\u0000\u0c99\u0c9b\u0003\u01e4\u00f2\u0000\u0c9a\u0c98\u0001"+
54086 		"\u0000\u0000\u0000\u0c9b\u0c9e\u0001\u0000\u0000\u0000\u0c9c\u0c9a\u0001"+
54087 		"\u0000\u0000\u0000\u0c9c\u0c9d\u0001\u0000\u0000\u0000\u0c9d\u0cb9\u0001"+
54088 		"\u0000\u0000\u0000\u0c9e\u0c9c\u0001\u0000\u0000\u0000\u0c9f\u0ca0\u0005"+
54089 		"\u0276\u0000\u0000\u0ca0\u0ca1\u0005\u0018\u0000\u0000\u0ca1\u0cb9\u0003"+
54090 		"\u00cae\u0000\u0ca2\u0ca3\u0005\u0277\u0000\u0000\u0ca3\u0ca4\u0005\u0018"+
54091 		"\u0000\u0000\u0ca4\u0cb9\u0003\u00cae\u0000\u0ca5\u0ca6\u0005\u0279\u0000"+
54092 		"\u0000\u0ca6\u0ca7\u0005\u0018\u0000\u0000\u0ca7\u0cb9\u0007\u0000\u0000"+
54093 		"\u0000\u0ca8\u0ca9\u0005\u027a\u0000\u0000\u0ca9\u0caa\u0005\u0018\u0000"+
54094 		"\u0000\u0caa\u0cb9\u0007\u0000\u0000\u0000\u0cab\u0cac\u0005\u027b\u0000"+
54095 		"\u0000\u0cac\u0cad\u0005\u0018\u0000\u0000\u0cad\u0cb9\u0003\u00cae\u0000"+
54096 		"\u0cae\u0caf\u0005\u01eb\u0000\u0000\u0caf\u0cb9\u0007\u0000\u0000\u0000"+
54097 		"\u0cb0\u0cb1\u0005\u01ec\u0000\u0000\u0cb1\u0cb9\u0007\u0000\u0000\u0000"+
54098 		"\u0cb2\u0cb3\u0005\u027c\u0000\u0000\u0cb3\u0cb4\u0005\u0018\u0000\u0000"+
54099 		"\u0cb4\u0cb5\u0005`\u0000\u0000\u0cb5\u0cb6\u0005\u027d\u0000\u0000\u0cb6"+
54100 		"\u0cb7\u0005\u0018\u0000\u0000\u0cb7\u0cb9\u0003\u00cae\u0000\u0cb8\u0c96"+
54101 		"\u0001\u0000\u0000\u0000\u0cb8\u0c9f\u0001\u0000\u0000\u0000\u0cb8\u0ca2"+
54102 		"\u0001\u0000\u0000\u0000\u0cb8\u0ca5\u0001\u0000\u0000\u0000\u0cb8\u0ca8"+
54103 		"\u0001\u0000\u0000\u0000\u0cb8\u0cab\u0001\u0000\u0000\u0000\u0cb8\u0cae"+
54104 		"\u0001\u0000\u0000\u0000\u0cb8\u0cb0\u0001\u0000\u0000\u0000\u0cb8\u0cb2"+
54105 		"\u0001\u0000\u0000\u0000\u0cb9\u01e3\u0001\u0000\u0000\u0000\u0cba\u0cbb"+
54106 		"\u0005\u01ea\u0000\u0000\u0cbb\u0cbc\u0005\u0018\u0000\u0000\u0cbc\u0cc1"+
54107 		"\u0007+\u0000\u0000\u0cbd\u0cbe\u0005\u027d\u0000\u0000\u0cbe\u0cbf\u0005"+
54108 		"\u0018\u0000\u0000\u0cbf\u0cc1\u0003\u00cae\u0000\u0cc0\u0cba\u0001\u0000"+
54109 		"\u0000\u0000\u0cc0\u0cbd\u0001\u0000\u0000\u0000\u0cc1\u01e5\u0001\u0000"+
54110 		"\u0000\u0000\u0cc2\u0cc3\u0005\u001f\u0000\u0000\u0cc3\u0cc4\u0005\u00a8"+
54111 		"\u0000\u0000\u0cc4\u0cc5\u0005\u0018\u0000\u0000\u0cc5\u0cc6\u0003\u00ca"+
54112 		"e\u0000\u0cc6\u0cc7\u0005%\u0000\u0000\u0cc7\u0cc8\u0005\u01de\u0000\u0000"+
54113 		"\u0cc8\u0cc9\u0005\u0018\u0000\u0000\u0cc9\u0cca\u0005\u02ae\u0000\u0000"+
54114 		"\u0cca\u0ccb\u0003\u01e8\u00f4\u0000\u0ccb\u0ccc\u0005 \u0000\u0000\u0ccc"+
54115 		"\u01e7\u0001\u0000\u0000\u0000\u0ccd\u0cce\u0005%\u0000\u0000\u0cce\u0ccf"+
54116 		"\u0005\u01df\u0000\u0000\u0ccf\u0cd0\u0005\u0018\u0000\u0000\u0cd0\u0cd2"+
54117 		"\u0003\u001e\u000f\u0000\u0cd1\u0cd3\u0007,\u0000\u0000\u0cd2\u0cd1\u0001"+
54118 		"\u0000\u0000\u0000\u0cd2\u0cd3\u0001\u0000\u0000\u0000\u0cd3\u0cd5\u0001"+
54119 		"\u0000\u0000\u0000\u0cd4\u0ccd\u0001\u0000\u0000\u0000\u0cd4\u0cd5\u0001"+
54120 		"\u0000\u0000\u0000\u0cd5\u0ce0\u0001\u0000\u0000\u0000\u0cd6\u0cd7\u0005"+
54121 		"%\u0000\u0000\u0cd7\u0cd8\u0005\u01e0\u0000\u0000\u0cd8\u0cde\u0005\u0018"+
54122 		"\u0000\u0000\u0cd9\u0cdb\u0003\u001e\u000f\u0000\u0cda\u0cdc\u0007,\u0000"+
54123 		"\u0000\u0cdb\u0cda\u0001\u0000\u0000\u0000\u0cdb\u0cdc\u0001\u0000\u0000"+
54124 		"\u0000\u0cdc\u0cdf\u0001\u0000\u0000\u0000\u0cdd\u0cdf\u0005\u01e2\u0000"+
54125 		"\u0000\u0cde\u0cd9\u0001\u0000\u0000\u0000\u0cde\u0cdd\u0001\u0000\u0000"+
54126 		"\u0000\u0cdf\u0ce1\u0001\u0000\u0000\u0000\u0ce0\u0cd6\u0001\u0000\u0000"+
54127 		"\u0000\u0ce0\u0ce1\u0001\u0000\u0000\u0000\u0ce1\u0ce9\u0001\u0000\u0000"+
54128 		"\u0000\u0ce2\u0ce3\u0005%\u0000\u0000\u0ce3\u0ce4\u0005\u01e1\u0000\u0000"+
54129 		"\u0ce4\u0ce5\u0005\u0018\u0000\u0000\u0ce5\u0ce7\u0003\u001e\u000f\u0000"+
54130 		"\u0ce6\u0ce8\u0007-\u0000\u0000\u0ce7\u0ce6\u0001\u0000\u0000\u0000\u0ce7"+
54131 		"\u0ce8\u0001\u0000\u0000\u0000\u0ce8\u0cea\u0001\u0000\u0000\u0000\u0ce9"+
54132 		"\u0ce2\u0001\u0000\u0000\u0000\u0ce9\u0cea\u0001\u0000\u0000\u0000\u0cea"+
54133 		"\u01e9\u0001\u0000\u0000\u0000\u0ceb\u0cec\u0005\u01e9\u0000\u0000\u0cec"+
54134 		"\u0cee\u0003\u00cae\u0000\u0ced\u0cef\u0003\u01ec\u00f6\u0000\u0cee\u0ced"+
54135 		"\u0001\u0000\u0000\u0000\u0cee\u0cef\u0001\u0000\u0000\u0000\u0cef\u0cf0"+
54136 		"\u0001\u0000\u0000\u0000\u0cf0\u0cf5\u0003\u01e6\u00f3\u0000\u0cf1\u0cf2"+
54137 		"\u0005%\u0000\u0000\u0cf2\u0cf4\u0003\u01e6\u00f3\u0000\u0cf3\u0cf1\u0001"+
54138 		"\u0000\u0000\u0000\u0cf4\u0cf7\u0001\u0000\u0000\u0000\u0cf5\u0cf3\u0001"+
54139 		"\u0000\u0000\u0000\u0cf5\u0cf6\u0001\u0000\u0000\u0000\u0cf6\u01eb\u0001"+
54140 		"\u0000\u0000\u0000\u0cf7\u0cf5\u0001\u0000\u0000\u0000\u0cf8\u0cf9\u0005"+
54141 		"\u01e7\u0000\u0000\u0cf9\u0cfb\u0005\u0103\u0000\u0000\u0cfa\u0cf8\u0001"+
54142 		"\u0000\u0000\u0000\u0cfa\u0cfb\u0001\u0000\u0000\u0000\u0cfb\u0cfd\u0001"+
54143 		"\u0000\u0000\u0000\u0cfc\u0cfe\u0005\u0098\u0000\u0000\u0cfd\u0cfc\u0001"+
54144 		"\u0000\u0000\u0000\u0cfd\u0cfe\u0001\u0000\u0000\u0000\u0cfe\u0d02\u0001"+
54145 		"\u0000\u0000\u0000\u0cff\u0d00\u0005\u01e7\u0000\u0000\u0d00\u0d02\u0005"+
54146 		"\u01e8\u0000\u0000\u0d01\u0cfa\u0001\u0000\u0000\u0000\u0d01\u0cff\u0001"+
54147 		"\u0000\u0000\u0000\u0d02\u01ed\u0001\u0000\u0000\u0000\u0d03\u0d04\u0005"+
54148 		"\u0173\u0000\u0000\u0d04\u0d05\u0005`\u0000\u0000\u0d05\u0d0a\u0003\u01e6"+
54149 		"\u00f3\u0000\u0d06\u0d07\u0005%\u0000\u0000\u0d07\u0d09\u0003\u01e6\u00f3"+
54150 		"\u0000\u0d08\u0d06\u0001\u0000\u0000\u0000\u0d09\u0d0c\u0001\u0000\u0000"+
54151 		"\u0000\u0d0a\u0d08\u0001\u0000\u0000\u0000\u0d0a\u0d0b\u0001\u0000\u0000"+
54152 		"\u0000\u0d0b\u0d0e\u0001\u0000\u0000\u0000\u0d0c\u0d0a\u0001\u0000\u0000"+
54153 		"\u0000\u0d0d\u0d03\u0001\u0000\u0000\u0000\u0d0d\u0d0e\u0001\u0000\u0000"+
54154 		"\u0000\u0d0e\u01ef\u0001\u0000\u0000\u0000\u0d0f\u0d19\u0005\u00cb\u0000"+
54155 		"\u0000\u0d10\u0d15\u0003\u01f2\u00f9\u0000\u0d11\u0d12\u0005%\u0000\u0000"+
54156 		"\u0d12\u0d14\u0003\u01f2\u00f9\u0000\u0d13\u0d11\u0001\u0000\u0000\u0000"+
54157 		"\u0d14\u0d17\u0001\u0000\u0000\u0000\u0d15\u0d13\u0001\u0000\u0000\u0000"+
54158 		"\u0d15\u0d16\u0001\u0000\u0000\u0000\u0d16\u0d1a\u0001\u0000\u0000\u0000"+
54159 		"\u0d17\u0d15\u0001\u0000\u0000\u0000\u0d18\u0d1a\u0003\u01f4\u00fa\u0000"+
54160 		"\u0d19\u0d10\u0001\u0000\u0000\u0000\u0d19\u0d18\u0001\u0000\u0000\u0000"+
54161 		"\u0d1a\u01f1\u0001\u0000\u0000\u0000\u0d1b\u0d1d\u0003\u00d0h\u0000\u0d1c"+
54162 		"\u0d1e\u0005_\u0000\u0000\u0d1d\u0d1c\u0001\u0000\u0000\u0000\u0d1d\u0d1e"+
54163 		"\u0001\u0000\u0000\u0000\u0d1e\u0d1f\u0001\u0000\u0000\u0000\u0d1f\u0d22"+
54164 		"\u0003\u0094J\u0000\u0d20\u0d21\u0005\u0018\u0000\u0000\u0d21\u0d23\u0003"+
54165 		"r9\u0000\u0d22\u0d20\u0001\u0000\u0000\u0000\u0d22\u0d23\u0001\u0000\u0000"+
54166 		"\u0000\u0d23\u0d28\u0001\u0000\u0000\u0000\u0d24\u0d25\u0003\u00d0h\u0000"+
54167 		"\u0d25\u0d26\u0005\u00cc\u0000\u0000\u0d26\u0d28\u0001\u0000\u0000\u0000"+
54168 		"\u0d27\u0d1b\u0001\u0000\u0000\u0000\u0d27\u0d24\u0001\u0000\u0000\u0000"+
54169 		"\u0d28\u01f3\u0001\u0000\u0000\u0000\u0d29\u0d2b\u0003\u00d0h\u0000\u0d2a"+
54170 		"\u0d2c\u0005_\u0000\u0000\u0d2b\u0d2a\u0001\u0000\u0000\u0000\u0d2b\u0d2c"+
54171 		"\u0001\u0000\u0000\u0000\u0d2c\u0d2d\u0001\u0000\u0000\u0000\u0d2d\u0d2e"+
54172 		"\u0003\u01f6\u00fb\u0000\u0d2e\u01f5\u0001\u0000\u0000\u0000\u0d2f\u0d30"+
54173 		"\u0005;\u0000\u0000\u0d30\u0d31\u0005\u001f\u0000\u0000\u0d31\u0d36\u0003"+
54174 		"\u01f8\u00fc\u0000\u0d32\u0d33\u0005%\u0000\u0000\u0d33\u0d35\u0003\u01f8"+
54175 		"\u00fc\u0000\u0d34\u0d32\u0001\u0000\u0000\u0000\u0d35\u0d38\u0001\u0000"+
54176 		"\u0000\u0000\u0d36\u0d34\u0001\u0000\u0000\u0000\u0d36\u0d37\u0001\u0000"+
54177 		"\u0000\u0000\u0d37\u0d39\u0001\u0000\u0000\u0000\u0d38\u0d36\u0001\u0000"+
54178 		"\u0000\u0000\u0d39\u0d3a\u0005 \u0000\u0000\u0d3a\u01f7\u0001\u0000\u0000"+
54179 		"\u0000\u0d3b\u0d3e\u0003\u01fa\u00fd\u0000\u0d3c\u0d3e\u0003\u01fe\u00ff"+
54180 		"\u0000\u0d3d\u0d3b\u0001\u0000\u0000\u0000\u0d3d\u0d3c\u0001\u0000\u0000"+
54181 		"\u0000\u0d3e\u01f9\u0001\u0000\u0000\u0000\u0d3f\u0d43\u0003H$\u0000\u0d40"+
54182 		"\u0d44\u0003\u0096K\u0000\u0d41\u0d42\u0005_\u0000\u0000\u0d42\u0d44\u0003"+
54183 		"b1\u0000\u0d43\u0d40\u0001\u0000\u0000\u0000\u0d43\u0d41\u0001\u0000\u0000"+
54184 		"\u0000\u0d44\u0d47\u0001\u0000\u0000\u0000\u0d45\u0d46\u0005\u00f3\u0000"+
54185 		"\u0000\u0d46\u0d48\u0003Z-\u0000\u0d47\u0d45\u0001\u0000\u0000\u0000\u0d47"+
54186 		"\u0d48\u0001\u0000\u0000\u0000\u0d48\u0d55\u0001\u0000\u0000\u0000\u0d49"+
54187 		"\u0d4a\u0005\u0098\u0000\u0000\u0d4a\u0d4c\u0003b1\u0000\u0d4b\u0d49\u0001"+
54188 		"\u0000\u0000\u0000\u0d4b\u0d4c\u0001\u0000\u0000\u0000\u0d4c\u0d56\u0001"+
54189 		"\u0000\u0000\u0000\u0d4d\u0d53\u0005\u0109\u0000\u0000\u0d4e\u0d4f\u0005"+
54190 		"\u001f\u0000\u0000\u0d4f\u0d50\u0005\u02af\u0000\u0000\u0d50\u0d51\u0005"+
54191 		"%\u0000\u0000\u0d51\u0d52\u0005\u02af\u0000\u0000\u0d52\u0d54\u0005 \u0000"+
54192 		"\u0000\u0d53\u0d4e\u0001\u0000\u0000\u0000\u0d53\u0d54\u0001\u0000\u0000"+
54193 		"\u0000\u0d54\u0d56\u0001\u0000\u0000\u0000\u0d55\u0d4b\u0001\u0000\u0000"+
54194 		"\u0000\u0d55\u0d4d\u0001\u0000\u0000\u0000\u0d56\u0d58\u0001\u0000\u0000"+
54195 		"\u0000\u0d57\u0d59\u0005\u0123\u0000\u0000\u0d58\u0d57\u0001\u0000\u0000"+
54196 		"\u0000\u0d58\u0d59\u0001\u0000\u0000\u0000\u0d59\u0d5a\u0001\u0000\u0000"+
54197 		"\u0000\u0d5a\u0d5b\u0003\u01fc\u00fe\u0000\u0d5b\u01fb\u0001\u0000\u0000"+
54198 		"\u0000\u0d5c\u0d60\u0005j\u0000\u0000\u0d5d\u0d5e\u0005i\u0000\u0000\u0d5e"+
54199 		"\u0d60\u0005j\u0000\u0000\u0d5f\u0d5c\u0001\u0000\u0000\u0000\u0d5f\u0d5d"+
54200 		"\u0001\u0000\u0000\u0000\u0d5f\u0d60\u0001\u0000\u0000\u0000\u0d60\u0d6e"+
54201 		"\u0001\u0000\u0000\u0000\u0d61\u0d62\u0005?\u0000\u0000\u0d62\u0d65\u0005"+
54202 		"B\u0000\u0000\u0d63\u0d65\u0005@\u0000\u0000\u0d64\u0d61\u0001\u0000\u0000"+
54203 		"\u0000\u0d64\u0d63\u0001\u0000\u0000\u0000\u0d64\u0d65\u0001\u0000\u0000"+
54204 		"\u0000\u0d65\u0d6e\u0001\u0000\u0000\u0000\u0d66\u0d67\u0005\u00e3\u0000"+
54205 		"\u0000\u0d67\u0d68\u0005\u001f\u0000\u0000\u0d68\u0d69\u0003b1\u0000\u0d69"+
54206 		"\u0d6a\u0005 \u0000\u0000\u0d6a\u0d6e\u0001\u0000\u0000\u0000\u0d6b\u0d6c"+
54207 		"\u0005L\u0000\u0000\u0d6c\u0d6e\u0003\u00b2Y\u0000\u0d6d\u0d5f\u0001\u0000"+
54208 		"\u0000\u0000\u0d6d\u0d64\u0001\u0000\u0000\u0000\u0d6d\u0d66\u0001\u0000"+
54209 		"\u0000\u0000\u0d6d\u0d6b\u0001\u0000\u0000\u0000\u0d6e\u01fd\u0001\u0000"+
54210 		"\u0000\u0000\u0d6f\u0d70\u0005?\u0000\u0000\u0d70\u0d73\u0005B\u0000\u0000"+
54211 		"\u0d71\u0d73\u0005@\u0000\u0000\u0d72\u0d6f\u0001\u0000\u0000\u0000\u0d72"+
54212 		"\u0d71\u0001\u0000\u0000\u0000\u0d73\u0d74\u0001\u0000\u0000\u0000\u0d74"+
54213 		"\u0d75\u0005\u001f\u0000\u0000\u0d75\u0d7a\u0003H$\u0000\u0d76\u0d77\u0005"+
54214 		"%\u0000\u0000\u0d77\u0d79\u0003H$\u0000\u0d78\u0d76\u0001\u0000\u0000"+
54215 		"\u0000\u0d79\u0d7c\u0001\u0000\u0000\u0000\u0d7a\u0d78\u0001\u0000\u0000"+
54216 		"\u0000\u0d7a\u0d7b\u0001\u0000\u0000\u0000\u0d7b\u0d7d\u0001\u0000\u0000"+
54217 		"\u0000\u0d7c\u0d7a\u0001\u0000\u0000\u0000\u0d7d\u0d7e\u0005 \u0000\u0000"+
54218 		"\u0d7e\u0d82\u0001\u0000\u0000\u0000\u0d7f\u0d80\u0005\u00e3\u0000\u0000"+
54219 		"\u0d80\u0d82\u0003b1\u0000\u0d81\u0d72\u0001\u0000\u0000\u0000\u0d81\u0d7f"+
54220 		"\u0001\u0000\u0000\u0000\u0d82\u01ff\u0001\u0000\u0000\u0000\u0d83\u0d84"+
54221 		"\u0005:\u0000\u0000\u0d84\u0d85\u0003\u00d0h\u0000\u0d85\u0d86\u0003\u0202"+
54222 		"\u0101\u0000\u0d86\u0201\u0001\u0000\u0000\u0000\u0d87\u0d88\u0005\u0014"+
54223 		"\u0000\u0000\u0d88\u0d8a\u0003*\u0015\u0000\u0d89\u0d87\u0001\u0000\u0000"+
54224 		"\u0000\u0d89\u0d8a\u0001\u0000\u0000\u0000\u0d8a\u0d8b\u0001\u0000\u0000"+
54225 		"\u0000\u0d8b\u0d92\u0005\u0018\u0000\u0000\u0d8c\u0d93\u0003b1\u0000\u0d8d"+
54226 		"\u0d8e\u0003*\u0015\u0000\u0d8e\u0d8f\u0005\u0014\u0000\u0000\u0d8f\u0d90"+
54227 		"\u0003*\u0015\u0000\u0d90\u0d93\u0001\u0000\u0000\u0000\u0d91\u0d93\u0005"+
54228 		"\u02b5\u0000\u0000\u0d92\u0d8c\u0001\u0000\u0000\u0000\u0d92\u0d8d\u0001"+
54229 		"\u0000\u0000\u0000\u0d92\u0d91\u0001\u0000\u0000\u0000\u0d93\u0d9f\u0001"+
54230 		"\u0000\u0000\u0000\u0d94\u0d95\u0003\u0208\u0104\u0000\u0d95\u0d96\u0003"+
54231 		"b1\u0000\u0d96\u0d9f\u0001\u0000\u0000\u0000\u0d97\u0d98\u0005\u0018\u0000"+
54232 		"\u0000\u0d98\u0d9f\u0003\u0204\u0102\u0000\u0d99\u0d9a\u0005\u0018\u0000"+
54233 		"\u0000\u0d9a\u0d9b\u0005\u001f\u0000\u0000\u0d9b\u0d9c\u0003\u02ae\u0157"+
54234 		"\u0000\u0d9c\u0d9d\u0005 \u0000\u0000\u0d9d\u0d9f\u0001\u0000\u0000\u0000"+
54235 		"\u0d9e\u0d89\u0001\u0000\u0000\u0000\u0d9e\u0d94\u0001\u0000\u0000\u0000"+
54236 		"\u0d9e\u0d97\u0001\u0000\u0000\u0000\u0d9e\u0d99\u0001\u0000\u0000\u0000"+
54237 		"\u0d9f\u0203\u0001\u0000\u0000\u0000\u0da0\u0db4\u0003\u00d0h\u0000\u0da1"+
54238 		"\u0da2\u0005\u00cc\u0000\u0000\u0da2\u0da3\u0003\u0206\u0103\u0000\u0da3"+
54239 		"\u0da4\u0005d\u0000\u0000\u0da4\u0da5\u0003\u02ae\u0157\u0000\u0da5\u0db1"+
54240 		"\u0005d\u0000\u0000\u0da6\u0db2\u0005\u00c9\u0000\u0000\u0da7\u0da8\u0005"+
54241 		"0\u0000\u0000\u0da8\u0da9\u0005\u00cd\u0000\u0000\u0da9\u0dae\u0003N\'"+
54242 		"\u0000\u0daa\u0dab\u0005%\u0000\u0000\u0dab\u0dad\u0003N\'\u0000\u0dac"+
54243 		"\u0daa\u0001\u0000\u0000\u0000\u0dad\u0db0\u0001\u0000\u0000\u0000\u0dae"+
54244 		"\u0dac\u0001\u0000\u0000\u0000\u0dae\u0daf\u0001\u0000\u0000\u0000\u0daf"+
54245 		"\u0db2\u0001\u0000\u0000\u0000\u0db0\u0dae\u0001\u0000\u0000\u0000\u0db1"+
54246 		"\u0da6\u0001\u0000\u0000\u0000\u0db1\u0da7\u0001\u0000\u0000\u0000\u0db2"+
54247 		"\u0db4\u0001\u0000\u0000\u0000\u0db3\u0da0\u0001\u0000\u0000\u0000\u0db3"+
54248 		"\u0da1\u0001\u0000\u0000\u0000\u0db4\u0205\u0001\u0000\u0000\u0000\u0db5"+
54249 		"\u0db7\u0007.\u0000\u0000\u0db6\u0db5\u0001\u0000\u0000\u0000\u0db6\u0db7"+
54250 		"\u0001\u0000\u0000\u0000\u0db7\u0db9\u0001\u0000\u0000\u0000\u0db8\u0dba"+
54251 		"\u0007/\u0000\u0000\u0db9\u0db8\u0001\u0000\u0000\u0000\u0db9\u0dba\u0001"+
54252 		"\u0000\u0000\u0000\u0dba\u0dbc\u0001\u0000\u0000\u0000\u0dbb\u0dbd\u0007"+
54253 		"0\u0000\u0000\u0dbc\u0dbb\u0001\u0000\u0000\u0000\u0dbc\u0dbd\u0001\u0000"+
54254 		"\u0000\u0000\u0dbd\u0dbf\u0001\u0000\u0000\u0000\u0dbe\u0dc0\u0005\u01f5"+
54255 		"\u0000\u0000\u0dbf\u0dbe\u0001\u0000\u0000\u0000\u0dbf\u0dc0\u0001\u0000"+
54256 		"\u0000\u0000\u0dc0\u0207\u0001\u0000\u0000\u0000\u0dc1\u0dc2\u0005\u000f"+
54257 		"\u0000\u0000\u0dc2\u0dd2\u0005\u0018\u0000\u0000\u0dc3\u0dc4\u0005\u0010"+
54258 		"\u0000\u0000\u0dc4\u0dd2\u0005\u0018\u0000\u0000\u0dc5\u0dc6\u0005\u0011"+
54259 		"\u0000\u0000\u0dc6\u0dd2\u0005\u0018\u0000\u0000\u0dc7\u0dc8\u0005\u0012"+
54260 		"\u0000\u0000\u0dc8\u0dd2\u0005\u0018\u0000\u0000\u0dc9\u0dca\u0005\r\u0000"+
54261 		"\u0000\u0dca\u0dd2\u0005\u0018\u0000\u0000\u0dcb\u0dcc\u0005\t\u0000\u0000"+
54262 		"\u0dcc\u0dd2\u0005\u0018\u0000\u0000\u0dcd\u0dce\u0005\f\u0000\u0000\u0dce"+
54263 		"\u0dd2\u0005\u0018\u0000\u0000\u0dcf\u0dd0\u0005\b\u0000\u0000\u0dd0\u0dd2"+
54264 		"\u0005\u0018\u0000\u0000\u0dd1\u0dc1\u0001\u0000\u0000\u0000\u0dd1\u0dc3"+
54265 		"\u0001\u0000\u0000\u0000\u0dd1\u0dc5\u0001\u0000\u0000\u0000\u0dd1\u0dc7"+
54266 		"\u0001\u0000\u0000\u0000\u0dd1\u0dc9\u0001\u0000\u0000\u0000\u0dd1\u0dcb"+
54267 		"\u0001\u0000\u0000\u0000\u0dd1\u0dcd\u0001\u0000\u0000\u0000\u0dd1\u0dcf"+
54268 		"\u0001\u0000\u0000\u0000\u0dd2\u0209\u0001\u0000\u0000\u0000\u0dd3\u0de7"+
54269 		"\u0005\u001f\u0000\u0000\u0dd4\u0dd6\u0003\u00d0h\u0000\u0dd5\u0dd7\u0005"+
54270 		"_\u0000\u0000\u0dd6\u0dd5\u0001\u0000\u0000\u0000\u0dd6\u0dd7\u0001\u0000"+
54271 		"\u0000\u0000\u0dd7\u0ddb\u0001\u0000\u0000\u0000\u0dd8\u0dd9\u0003L&\u0000"+
54272 		"\u0dd9\u0dda\u0005\u0014\u0000\u0000\u0dda\u0ddc\u0001\u0000\u0000\u0000"+
54273 		"\u0ddb\u0dd8\u0001\u0000\u0000\u0000\u0ddb\u0ddc\u0001\u0000\u0000\u0000"+
54274 		"\u0ddc\u0ddd\u0001\u0000\u0000\u0000\u0ddd\u0de0\u0003\u0094J\u0000\u0dde"+
54275 		"\u0ddf\u0005\u0018\u0000\u0000\u0ddf\u0de1\u0003\u00cae\u0000\u0de0\u0dde"+
54276 		"\u0001\u0000\u0000\u0000\u0de0\u0de1\u0001\u0000\u0000\u0000\u0de1\u0de3"+
54277 		"\u0001\u0000\u0000\u0000\u0de2\u0de4\u0005\u00d1\u0000\u0000\u0de3\u0de2"+
54278 		"\u0001\u0000\u0000\u0000\u0de3\u0de4\u0001\u0000\u0000\u0000\u0de4\u0de6"+
54279 		"\u0001\u0000\u0000\u0000\u0de5\u0dd4\u0001\u0000\u0000\u0000\u0de6\u0de9"+
54280 		"\u0001\u0000\u0000\u0000\u0de7\u0de5\u0001\u0000\u0000\u0000\u0de7\u0de8"+
54281 		"\u0001\u0000\u0000\u0000\u0de8\u0dea\u0001\u0000\u0000\u0000\u0de9\u0de7"+
54282 		"\u0001\u0000\u0000\u0000\u0dea\u0deb\u0005 \u0000\u0000\u0deb\u020b\u0001"+
54283 		"\u0000\u0000\u0000\u0dec\u0df0\u0003\u0212\u0109\u0000\u0ded\u0df0\u0003"+
54284 		"\u0210\u0108\u0000\u0dee\u0df0\u0003\u020e\u0107\u0000\u0def\u0dec\u0001"+
54285 		"\u0000\u0000\u0000\u0def\u0ded\u0001\u0000\u0000\u0000\u0def\u0dee\u0001"+
54286 		"\u0000\u0000\u0000\u0df0\u020d\u0001\u0000\u0000\u0000\u0df1\u0df2\u0005"+
54287 		"\u00ce\u0000\u0000\u0df2\u0df3\u0003\u00d0h\u0000\u0df3\u0df4\u0005;\u0000"+
54288 		"\u0000\u0df4\u0dfe\u0003\u012a\u0095\u0000\u0df5\u0df6\u0005L\u0000\u0000"+
54289 		"\u0df6\u0dfb\u0003\u0218\u010c\u0000\u0df7\u0df8\u0005%\u0000\u0000\u0df8"+
54290 		"\u0dfa\u0003\u0218\u010c\u0000\u0df9\u0df7\u0001\u0000\u0000\u0000\u0dfa"+
54291 		"\u0dfd\u0001\u0000\u0000\u0000\u0dfb\u0df9\u0001\u0000\u0000\u0000\u0dfb"+
54292 		"\u0dfc\u0001\u0000\u0000\u0000\u0dfc\u0dff\u0001\u0000\u0000\u0000\u0dfd"+
54293 		"\u0dfb\u0001\u0000\u0000\u0000\u0dfe\u0df5\u0001\u0000\u0000\u0000\u0dfe"+
54294 		"\u0dff\u0001\u0000\u0000\u0000\u0dff\u0e01\u0001\u0000\u0000\u0000\u0e00"+
54295 		"\u0e02\u0005_\u0000\u0000\u0e01\u0e00\u0001\u0000\u0000\u0000\u0e01\u0e02"+
54296 		"\u0001\u0000\u0000\u0000\u0e02\u0e03\u0001\u0000\u0000\u0000\u0e03\u0e04"+
54297 		"\u0005{\u0000\u0000\u0e04\u0e05\u0003\u0216\u010b\u0000\u0e05\u0e06\u0005"+
54298 		"\u00d0\u0000\u0000\u0e06\u0e07\u0005\u0102\u0000\u0000\u0e07\u020f\u0001"+
54299 		"\u0000\u0000\u0000\u0e08\u0e09\u0005\u00ce\u0000\u0000\u0e09\u0e13\u0005"+
54300 		";\u0000\u0000\u0e0a\u0e0b\u0005L\u0000\u0000\u0e0b\u0e10\u0003\u0218\u010c"+
54301 		"\u0000\u0e0c\u0e0d\u0005%\u0000\u0000\u0e0d\u0e0f\u0003\u0218\u010c\u0000"+
54302 		"\u0e0e\u0e0c\u0001\u0000\u0000\u0000\u0e0f\u0e12\u0001\u0000\u0000\u0000"+
54303 		"\u0e10\u0e0e\u0001\u0000\u0000\u0000\u0e10\u0e11\u0001\u0000\u0000\u0000"+
54304 		"\u0e11\u0e14\u0001\u0000\u0000\u0000\u0e12\u0e10\u0001\u0000\u0000\u0000"+
54305 		"\u0e13\u0e0a\u0001\u0000\u0000\u0000\u0e13\u0e14\u0001\u0000\u0000\u0000"+
54306 		"\u0e14\u0e16\u0001\u0000\u0000\u0000\u0e15\u0e17\u0005_\u0000\u0000\u0e16"+
54307 		"\u0e15\u0001\u0000\u0000\u0000\u0e16\u0e17\u0001\u0000\u0000\u0000\u0e17"+
54308 		"\u0e18\u0001\u0000\u0000\u0000\u0e18\u0e1a\u0005\u00d0\u0000\u0000\u0e19"+
54309 		"\u0e1b\u0005\u001f\u0000\u0000\u0e1a\u0e19\u0001\u0000\u0000\u0000\u0e1a"+
54310 		"\u0e1b\u0001\u0000\u0000\u0000\u0e1b\u0e1c\u0001\u0000\u0000\u0000\u0e1c"+
54311 		"\u0e1e\u0003\u02ae\u0157\u0000\u0e1d\u0e1f\u0005 \u0000\u0000\u0e1e\u0e1d"+
54312 		"\u0001\u0000\u0000\u0000\u0e1e\u0e1f\u0001\u0000\u0000\u0000\u0e1f\u0211"+
54313 		"\u0001\u0000\u0000\u0000\u0e20\u0e21\u0005\u00ce\u0000\u0000\u0e21\u0e2b"+
54314 		"\u0003\u0094J\u0000\u0e22\u0e23\u0005L\u0000\u0000\u0e23\u0e28\u0003\u0218"+
54315 		"\u010c\u0000\u0e24\u0e25\u0005%\u0000\u0000\u0e25\u0e27\u0003\u0218\u010c"+
54316 		"\u0000\u0e26\u0e24\u0001\u0000\u0000\u0000\u0e27\u0e2a\u0001\u0000\u0000"+
54317 		"\u0000\u0e28\u0e26\u0001\u0000\u0000\u0000\u0e28\u0e29\u0001\u0000\u0000"+
54318 		"\u0000\u0e29\u0e2c\u0001\u0000\u0000\u0000\u0e2a\u0e28\u0001\u0000\u0000"+
54319 		"\u0000\u0e2b\u0e22\u0001\u0000\u0000\u0000\u0e2b\u0e2c\u0001\u0000\u0000"+
54320 		"\u0000\u0e2c\u0e2e\u0001\u0000\u0000\u0000\u0e2d\u0e2f\u0005_\u0000\u0000"+
54321 		"\u0e2e\u0e2d\u0001\u0000\u0000\u0000\u0e2e\u0e2f\u0001\u0000\u0000\u0000"+
54322 		"\u0e2f\u0e30\u0001\u0000\u0000\u0000\u0e30\u0e31\u0005{\u0000\u0000\u0e31"+
54323 		"\u0e32\u0003\u0216\u010b\u0000\u0e32\u0e33\u0005\u00d0\u0000\u0000\u0e33"+
54324 		"\u0e34\u0003b1\u0000\u0e34\u0213\u0001\u0000\u0000\u0000\u0e35\u0e36\u0003"+
54325 		"\u012e\u0097\u0000\u0e36\u0e37\u0003\u0134\u009a\u0000\u0e37\u0e3a\u0001"+
54326 		"\u0000\u0000\u0000\u0e38\u0e3a\u0003\u0164\u00b2\u0000\u0e39\u0e35\u0001"+
54327 		"\u0000\u0000\u0000\u0e39\u0e38\u0001\u0000\u0000\u0000\u0e3a\u0e3e\u0001"+
54328 		"\u0000\u0000\u0000\u0e3b\u0e3d\u0003\u0168\u00b4\u0000\u0e3c\u0e3b\u0001"+
54329 		"\u0000\u0000\u0000\u0e3d\u0e40\u0001\u0000\u0000\u0000\u0e3e\u0e3c\u0001"+
54330 		"\u0000\u0000\u0000\u0e3e\u0e3f\u0001\u0000\u0000\u0000\u0e3f\u0215\u0001"+
54331 		"\u0000\u0000\u0000\u0e40\u0e3e\u0001\u0000\u0000\u0000\u0e41\u0e43\u0003"+
54332 		"\u021a\u010d\u0000\u0e42\u0e41\u0001\u0000\u0000\u0000\u0e43\u0e46\u0001"+
54333 		"\u0000\u0000\u0000\u0e44\u0e42\u0001\u0000\u0000\u0000\u0e44\u0e45\u0001"+
54334 		"\u0000\u0000\u0000\u0e45\u0217\u0001\u0000\u0000\u0000\u0e46\u0e44\u0001"+
54335 		"\u0000\u0000\u0000\u0e47\u0e49\u0005\u015b\u0000\u0000\u0e48\u0e47\u0001"+
54336 		"\u0000\u0000\u0000\u0e48\u0e49\u0001\u0000\u0000\u0000\u0e49\u0e61\u0001"+
54337 		"\u0000\u0000\u0000\u0e4a\u0e4c\u0005\u01f6\u0000\u0000\u0e4b\u0e4a\u0001"+
54338 		"\u0000\u0000\u0000\u0e4b\u0e4c\u0001\u0000\u0000\u0000\u0e4c\u0e61\u0001"+
54339 		"\u0000\u0000\u0000\u0e4d\u0e4e\u0005\u00ce\u0000\u0000\u0e4e\u0e4f\u0005"+
54340 		"j\u0000\u0000\u0e4f\u0e50\u0005`\u0000\u0000\u0e50\u0e51\u0005j\u0000"+
54341 		"\u0000\u0e51\u0e57\u0005\u01f8\u0000\u0000\u0e52\u0e53\u0005\u01f9\u0000"+
54342 		"\u0000\u0e53\u0e54\u0005`\u0000\u0000\u0e54\u0e55\u0005j\u0000\u0000\u0e55"+
54343 		"\u0e57\u0005\u01f8\u0000\u0000\u0e56\u0e4d\u0001\u0000\u0000\u0000\u0e56"+
54344 		"\u0e52\u0001\u0000\u0000\u0000\u0e56\u0e57\u0001\u0000\u0000\u0000\u0e57"+
54345 		"\u0e61\u0001\u0000\u0000\u0000\u0e58\u0e5a\u0003\u00d2i\u0000\u0e59\u0e58"+
54346 		"\u0001\u0000\u0000\u0000\u0e59\u0e5a\u0001\u0000\u0000\u0000\u0e5a\u0e61"+
54347 		"\u0001\u0000\u0000\u0000\u0e5b\u0e5c\u0005\u0278\u0000\u0000\u0e5c\u0e5d"+
54348 		"\u0005\u0018\u0000\u0000\u0e5d\u0e5f\u0007\u0000\u0000\u0000\u0e5e\u0e5b"+
54349 		"\u0001\u0000\u0000\u0000\u0e5e\u0e5f\u0001\u0000\u0000\u0000\u0e5f\u0e61"+
54350 		"\u0001\u0000\u0000\u0000\u0e60\u0e48\u0001\u0000\u0000\u0000\u0e60\u0e4b"+
54351 		"\u0001\u0000\u0000\u0000\u0e60\u0e56\u0001\u0000\u0000\u0000\u0e60\u0e59"+
54352 		"\u0001\u0000\u0000\u0000\u0e60\u0e5e\u0001\u0000\u0000\u0000\u0e61\u0219"+
54353 		"\u0001\u0000\u0000\u0000\u0e62\u0e6d\u0003\u00e6s\u0000\u0e63\u0e6d\u0003"+
54354 		"\u00fc~\u0000\u0e64\u0e6d\u0003\u0110\u0088\u0000\u0e65\u0e6d\u0003\u0124"+
54355 		"\u0092\u0000\u0e66\u0e6d\u0003\u0294\u014a\u0000\u0e67\u0e6d\u0003\u029c"+
54356 		"\u014e\u0000\u0e68\u0e6d\u0003\u02a6\u0153\u0000\u0e69\u0e6d\u0003\u02ae"+
54357 		"\u0157\u0000\u0e6a\u0e6d\u0003\u0200\u0100\u0000\u0e6b\u0e6d\u0003\u01f0"+
54358 		"\u00f8\u0000\u0e6c\u0e62\u0001\u0000\u0000\u0000\u0e6c\u0e63\u0001\u0000"+
54359 		"\u0000\u0000\u0e6c\u0e64\u0001\u0000\u0000\u0000\u0e6c\u0e65\u0001\u0000"+
54360 		"\u0000\u0000\u0e6c\u0e66\u0001\u0000\u0000\u0000\u0e6c\u0e67\u0001\u0000"+
54361 		"\u0000\u0000\u0e6c\u0e68\u0001\u0000\u0000\u0000\u0e6c\u0e69\u0001\u0000"+
54362 		"\u0000\u0000\u0e6c\u0e6a\u0001\u0000\u0000\u0000\u0e6c\u0e6b\u0001\u0000"+
54363 		"\u0000\u0000\u0e6d\u0e6f\u0001\u0000\u0000\u0000\u0e6e\u0e70\u0005+\u0000"+
54364 		"\u0000\u0e6f\u0e6e\u0001\u0000\u0000\u0000\u0e6f\u0e70\u0001\u0000\u0000"+
54365 		"\u0000\u0e70\u021b\u0001\u0000\u0000\u0000\u0e71\u0e76\u0003\u021e\u010f"+
54366 		"\u0000\u0e72\u0e73\u0005%\u0000\u0000\u0e73\u0e75\u0003\u021e\u010f\u0000"+
54367 		"\u0e74\u0e72\u0001\u0000\u0000\u0000\u0e75\u0e78\u0001\u0000\u0000\u0000"+
54368 		"\u0e76\u0e74\u0001\u0000\u0000\u0000\u0e76\u0e77\u0001\u0000\u0000\u0000"+
54369 		"\u0e77\u0e7a\u0001\u0000\u0000\u0000\u0e78\u0e76\u0001\u0000\u0000\u0000"+
54370 		"\u0e79\u0e71\u0001\u0000\u0000\u0000\u0e79\u0e7a\u0001\u0000\u0000\u0000"+
54371 		"\u0e7a\u021d\u0001\u0000\u0000\u0000\u0e7b\u0e7d\u0003\u01f2\u00f9\u0000"+
54372 		"\u0e7c\u0e7e\u0005\u01fa\u0000\u0000\u0e7d\u0e7c\u0001\u0000\u0000\u0000"+
54373 		"\u0e7d\u0e7e\u0001\u0000\u0000\u0000\u0e7e\u0e81\u0001\u0000\u0000\u0000"+
54374 		"\u0e7f\u0e80\u0005\u0018\u0000\u0000\u0e80\u0e82\u0003\u001a\r\u0000\u0e81"+
54375 		"\u0e7f\u0001\u0000\u0000\u0000\u0e81\u0e82\u0001\u0000\u0000\u0000\u0e82"+
54376 		"\u0e84\u0001\u0000\u0000\u0000\u0e83\u0e85\u00071\u0000\u0000\u0e84\u0e83"+
54377 		"\u0001\u0000\u0000\u0000\u0e84\u0e85\u0001\u0000\u0000\u0000\u0e85\u021f"+
54378 		"\u0001\u0000\u0000\u0000\u0e86\u0e88\u0003\u0222\u0111\u0000\u0e87\u0e86"+
54379 		"\u0001\u0000\u0000\u0000\u0e87\u0e88\u0001\u0000\u0000\u0000\u0e88\u0e8b"+
54380 		"\u0001\u0000\u0000\u0000\u0e89\u0e8a\u0005d\u0000\u0000\u0e8a\u0e8c\u0005"+
54381 		"\u0121\u0000\u0000\u0e8b\u0e89\u0001\u0000\u0000\u0000\u0e8b\u0e8c\u0001"+
54382 		"\u0000\u0000\u0000\u0e8c\u0e8d\u0001\u0000\u0000\u0000\u0e8d\u0e8e\u0005"+
54383 		"_\u0000\u0000\u0e8e\u0e8f\u0003\u0226\u0113\u0000\u0e8f\u0221\u0001\u0000"+
54384 		"\u0000\u0000\u0e90\u0e99\u0005L\u0000\u0000\u0e91\u0e96\u0003\u0224\u0112"+
54385 		"\u0000\u0e92\u0e93\u0005%\u0000\u0000\u0e93\u0e95\u0003\u0224\u0112\u0000"+
54386 		"\u0e94\u0e92\u0001\u0000\u0000\u0000\u0e95\u0e98\u0001\u0000\u0000\u0000"+
54387 		"\u0e96\u0e94\u0001\u0000\u0000\u0000\u0e96\u0e97\u0001\u0000\u0000\u0000"+
54388 		"\u0e97\u0e9a\u0001\u0000\u0000\u0000\u0e98\u0e96\u0001\u0000\u0000\u0000"+
54389 		"\u0e99\u0e91\u0001\u0000\u0000\u0000\u0e99\u0e9a\u0001\u0000\u0000\u0000"+
54390 		"\u0e9a\u0223\u0001\u0000\u0000\u0000\u0e9b\u0ea1\u0005\u015b\u0000\u0000"+
54391 		"\u0e9c\u0ea1\u0005\u01d6\u0000\u0000\u0e9d\u0ea1\u0003\u00d2i\u0000\u0e9e"+
54392 		"\u0ea1\u0005\u0205\u0000\u0000\u0e9f\u0ea1\u0005\u01f6\u0000\u0000\u0ea0"+
54393 		"\u0e9b\u0001\u0000\u0000\u0000\u0ea0\u0e9c\u0001\u0000\u0000\u0000\u0ea0"+
54394 		"\u0e9d\u0001\u0000\u0000\u0000\u0ea0\u0e9e\u0001\u0000\u0000\u0000\u0ea0"+
54395 		"\u0e9f\u0001\u0000\u0000\u0000\u0ea1\u0225\u0001\u0000\u0000\u0000\u0ea2"+
54396 		"\u0ea4\u0005{\u0000\u0000\u0ea3\u0ea2\u0001\u0000\u0000\u0000\u0ea3\u0ea4"+
54397 		"\u0001\u0000\u0000\u0000\u0ea4\u0ea5\u0001\u0000\u0000\u0000\u0ea5\u0ea7"+
54398 		"\u0003\u0216\u010b\u0000\u0ea6\u0ea8\u0005\u0102\u0000\u0000\u0ea7\u0ea6"+
54399 		"\u0001\u0000\u0000\u0000\u0ea7\u0ea8\u0001\u0000\u0000\u0000\u0ea8\u0ec6"+
54400 		"\u0001\u0000\u0000\u0000\u0ea9\u0eaa\u0005\u014e\u0000\u0000\u0eaa\u0eae"+
54401 		"\u0005\u00a8\u0000\u0000\u0eab\u0eac\u0003L&\u0000\u0eac\u0ead\u0005\u0014"+
54402 		"\u0000\u0000\u0ead\u0eaf\u0001\u0000\u0000\u0000\u0eae\u0eab\u0001\u0000"+
54403 		"\u0000\u0000\u0eae\u0eaf\u0001\u0000\u0000\u0000\u0eaf\u0eb3\u0001\u0000"+
54404 		"\u0000\u0000\u0eb0\u0eb1\u0003L&\u0000\u0eb1\u0eb2\u0005\u0014\u0000\u0000"+
54405 		"\u0eb2\u0eb4\u0001\u0000\u0000\u0000\u0eb3\u0eb0\u0001\u0000\u0000\u0000"+
54406 		"\u0eb3\u0eb4\u0001\u0000\u0000\u0000\u0eb4\u0eb5\u0001\u0000\u0000\u0000"+
54407 		"\u0eb5\u0ec6\u0003N\'\u0000\u0eb6\u0eb7\u0005{\u0000\u0000\u0eb7\u0eb8"+
54408 		"\u0005\u01fd\u0000\u0000\u0eb8\u0eb9\u0005L\u0000\u0000\u0eb9\u0ebe\u0003"+
54409 		"\u0228\u0114\u0000\u0eba\u0ebb\u0005%\u0000\u0000\u0ebb\u0ebd\u0003\u0228"+
54410 		"\u0114\u0000\u0ebc\u0eba\u0001\u0000\u0000\u0000\u0ebd\u0ec0\u0001\u0000"+
54411 		"\u0000\u0000\u0ebe\u0ebc\u0001\u0000\u0000\u0000\u0ebe\u0ebf\u0001\u0000"+
54412 		"\u0000\u0000\u0ebf\u0ec1\u0001\u0000\u0000\u0000\u0ec0\u0ebe\u0001\u0000"+
54413 		"\u0000\u0000\u0ec1\u0ec3\u0003\u0216\u010b\u0000\u0ec2\u0ec4\u0005\u0102"+
54414 		"\u0000\u0000\u0ec3\u0ec2\u0001\u0000\u0000\u0000\u0ec3\u0ec4\u0001\u0000"+
54415 		"\u0000\u0000\u0ec4\u0ec6\u0001\u0000\u0000\u0000\u0ec5\u0ea3\u0001\u0000"+
54416 		"\u0000\u0000\u0ec5\u0ea9\u0001\u0000\u0000\u0000\u0ec5\u0eb6\u0001\u0000"+
54417 		"\u0000\u0000\u0ec6\u0227\u0001\u0000\u0000\u0000\u0ec7\u0ec8\u0005\u01fe"+
54418 		"\u0000\u0000\u0ec8\u0ec9\u0005\u0018\u0000\u0000\u0ec9\u0ede\u0003\u001c"+
54419 		"\u000e\u0000\u0eca\u0ecb\u0005\u00ec\u0000\u0000\u0ecb\u0ecc\u0005\u0200"+
54420 		"\u0000\u0000\u0ecc\u0ecd\u0005\u01ff\u0000\u0000\u0ecd\u0ed2\u0005\u0018"+
54421 		"\u0000\u0000\u0ece\u0ed3\u0005\u0201\u0000\u0000\u0ecf\u0ed0\u0005\u0202"+
54422 		"\u0000\u0000\u0ed0\u0ed3\u0005\u0203\u0000\u0000\u0ed1\u0ed3\u0005\u0204"+
54423 		"\u0000\u0000\u0ed2\u0ece\u0001\u0000\u0000\u0000\u0ed2\u0ecf\u0001\u0000"+
54424 		"\u0000\u0000\u0ed2\u0ed1\u0001\u0000\u0000\u0000\u0ed3\u0ede\u0001\u0000"+
54425 		"\u0000\u0000\u0ed4\u0ed5\u0005\u0271\u0000\u0000\u0ed5\u0ed6\u0005\u0018"+
54426 		"\u0000\u0000\u0ed6\u0ede\u0003\u001e\u000f\u0000\u0ed7\u0ed8\u0005\u027e"+
54427 		"\u0000\u0000\u0ed8\u0ed9\u0005\u0018\u0000\u0000\u0ed9\u0ede\u0003\u001c"+
54428 		"\u000e\u0000\u0eda\u0edb\u0005\u027f\u0000\u0000\u0edb\u0edc\u0005\u0018"+
54429 		"\u0000\u0000\u0edc\u0ede\u0007\u0000\u0000\u0000\u0edd\u0ec7\u0001\u0000"+
54430 		"\u0000\u0000\u0edd\u0eca\u0001\u0000\u0000\u0000\u0edd\u0ed4\u0001\u0000"+
54431 		"\u0000\u0000\u0edd\u0ed7\u0001\u0000\u0000\u0000\u0edd\u0eda\u0001\u0000"+
54432 		"\u0000\u0000\u0ede\u0229\u0001\u0000\u0000\u0000\u0edf\u0ee0\u0005L\u0000"+
54433 		"\u0000\u0ee0\u0ee5\u0003\u022c\u0116\u0000\u0ee1\u0ee2\u0005%\u0000\u0000"+
54434 		"\u0ee2\u0ee4\u0003\u022c\u0116\u0000\u0ee3\u0ee1\u0001\u0000\u0000\u0000"+
54435 		"\u0ee4\u0ee7\u0001\u0000\u0000\u0000\u0ee5\u0ee3\u0001\u0000\u0000\u0000"+
54436 		"\u0ee5\u0ee6\u0001\u0000\u0000\u0000\u0ee6\u0ee9\u0001\u0000\u0000\u0000"+
54437 		"\u0ee7\u0ee5\u0001\u0000\u0000\u0000\u0ee8\u0edf\u0001\u0000\u0000\u0000"+
54438 		"\u0ee8\u0ee9\u0001\u0000\u0000\u0000\u0ee9\u0eea\u0001\u0000\u0000\u0000"+
54439 		"\u0eea\u0eec\u0005_\u0000\u0000\u0eeb\u0eed\u0003\u022e\u0117\u0000\u0eec"+
54440 		"\u0eeb\u0001\u0000\u0000\u0000\u0eec\u0eed\u0001\u0000\u0000\u0000\u0eed"+
54441 		"\u0eee\u0001\u0000\u0000\u0000\u0eee\u0ef2\u0003\u02ae\u0157\u0000\u0eef"+
54442 		"\u0ef0\u0005L\u0000\u0000\u0ef0\u0ef1\u0005\u00e3\u0000\u0000\u0ef1\u0ef3"+
54443 		"\u0005\u00e6\u0000\u0000\u0ef2\u0eef\u0001\u0000\u0000\u0000\u0ef2\u0ef3"+
54444 		"\u0001\u0000\u0000\u0000\u0ef3\u022b\u0001\u0000\u0000\u0000\u0ef4\u0ef5"+
54445 		"\u00072\u0000\u0000\u0ef5\u022d\u0001\u0000\u0000\u0000\u0ef6\u0ef7\u0005"+
54446 		"L\u0000\u0000\u0ef7\u0efc\u0003\u0230\u0118\u0000\u0ef8\u0ef9\u0005%\u0000"+
54447 		"\u0000\u0ef9\u0efb\u0003\u0230\u0118\u0000\u0efa\u0ef8\u0001\u0000\u0000"+
54448 		"\u0000\u0efb\u0efe\u0001\u0000\u0000\u0000\u0efc\u0efa\u0001\u0000\u0000"+
54449 		"\u0000\u0efc\u0efd\u0001\u0000\u0000\u0000\u0efd\u022f\u0001\u0000\u0000"+
54450 		"\u0000\u0efe\u0efc\u0001\u0000\u0000\u0000\u0eff\u0f0b\u0003N\'\u0000"+
54451 		"\u0f00\u0f01\u0005\u001f\u0000\u0000\u0f01\u0f06\u0003H$\u0000\u0f02\u0f03"+
54452 		"\u0005%\u0000\u0000\u0f03\u0f05\u0003H$\u0000\u0f04\u0f02\u0001\u0000"+
54453 		"\u0000\u0000\u0f05\u0f08\u0001\u0000\u0000\u0000\u0f06\u0f04\u0001\u0000"+
54454 		"\u0000\u0000\u0f06\u0f07\u0001\u0000\u0000\u0000\u0f07\u0f09\u0001\u0000"+
54455 		"\u0000\u0000\u0f08\u0f06\u0001\u0000\u0000\u0000\u0f09\u0f0a\u0005 \u0000"+
54456 		"\u0000\u0f0a\u0f0c\u0001\u0000\u0000\u0000\u0f0b\u0f00\u0001\u0000\u0000"+
54457 		"\u0000\u0f0b\u0f0c\u0001\u0000\u0000\u0000\u0f0c\u0f0d\u0001\u0000\u0000"+
54458 		"\u0000\u0f0d\u0f0e\u0005_\u0000\u0000\u0f0e\u0f0f\u0005\u001f\u0000\u0000"+
54459 		"\u0f0f\u0f10\u0003\u02ae\u0157\u0000\u0f10\u0f11\u0005 \u0000\u0000\u0f11"+
54460 		"\u0231\u0001\u0000\u0000\u0000\u0f12\u0f13\u0005L\u0000\u0000\u0f13\u0f14"+
54461 		"\u0003\u0234\u011a\u0000\u0f14\u0f15\u0005%\u0000\u0000\u0f15\u0f16\u0003"+
54462 		"\u0234\u011a\u0000\u0f16\u0f18\u0001\u0000\u0000\u0000\u0f17\u0f12\u0001"+
54463 		"\u0000\u0000\u0000\u0f17\u0f18\u0001\u0000\u0000\u0000\u0f18\u0f1d\u0001"+
54464 		"\u0000\u0000\u0000\u0f19\u0f1e\u0005d\u0000\u0000\u0f1a\u0f1e\u0005\u0207"+
54465 		"\u0000\u0000\u0f1b\u0f1c\u0005\u0208\u0000\u0000\u0f1c\u0f1e\u0005\u00cd"+
54466 		"\u0000\u0000\u0f1d\u0f19\u0001\u0000\u0000\u0000\u0f1d\u0f1a\u0001\u0000"+
54467 		"\u0000\u0000\u0f1d\u0f1b\u0001\u0000\u0000\u0000\u0f1e\u0f20\u0001\u0000"+
54468 		"\u0000\u0000\u0f1f\u0f21\u0005/\u0000\u0000\u0f20\u0f1f\u0001\u0000\u0000"+
54469 		"\u0000\u0f20\u0f21\u0001\u0000\u0000\u0000\u0f21\u0f23\u0001\u0000\u0000"+
54470 		"\u0000\u0f22\u0f24\u0005%\u0000\u0000\u0f23\u0f22\u0001\u0000\u0000\u0000"+
54471 		"\u0f23\u0f24\u0001\u0000\u0000\u0000\u0f24\u0f26\u0001\u0000\u0000\u0000"+
54472 		"\u0f25\u0f27\u00050\u0000\u0000\u0f26\u0f25\u0001\u0000\u0000\u0000\u0f26"+
54473 		"\u0f27\u0001\u0000\u0000\u0000\u0f27\u0f29\u0001\u0000\u0000\u0000\u0f28"+
54474 		"\u0f2a\u0005%\u0000\u0000\u0f29\u0f28\u0001\u0000\u0000\u0000\u0f29\u0f2a"+
54475 		"\u0001\u0000\u0000\u0000\u0f2a\u0f2c\u0001\u0000\u0000\u0000\u0f2b\u0f2d"+
54476 		"\u00051\u0000\u0000\u0f2c\u0f2b\u0001\u0000\u0000\u0000\u0f2c\u0f2d\u0001"+
54477 		"\u0000\u0000\u0000\u0f2d\u0f2f\u0001\u0000\u0000\u0000\u0f2e\u0f30\u0005"+
54478 		"%\u0000\u0000\u0f2f\u0f2e\u0001\u0000\u0000\u0000\u0f2f\u0f30\u0001\u0000"+
54479 		"\u0000\u0000\u0f30\u0f33\u0001\u0000\u0000\u0000\u0f31\u0f32\u0005L\u0000"+
54480 		"\u0000\u0f32\u0f34\u0005\u0209\u0000\u0000\u0f33\u0f31\u0001\u0000\u0000"+
54481 		"\u0000\u0f33\u0f34\u0001\u0000\u0000\u0000\u0f34\u0f38\u0001\u0000\u0000"+
54482 		"\u0000\u0f35\u0f36\u0005i\u0000\u0000\u0f36\u0f37\u0005d\u0000\u0000\u0f37"+
54483 		"\u0f39\u0005\u0121\u0000\u0000\u0f38\u0f35\u0001\u0000\u0000\u0000\u0f38"+
54484 		"\u0f39\u0001\u0000\u0000\u0000\u0f39\u0f3a\u0001\u0000\u0000\u0000\u0f3a"+
54485 		"\u0f3f\u0005_\u0000\u0000\u0f3b\u0f40\u0003\u0216\u010b\u0000\u0f3c\u0f3d"+
54486 		"\u0005\u014e\u0000\u0000\u0f3d\u0f3e\u0005\u00a8\u0000\u0000\u0f3e\u0f40"+
54487 		"\u0003\u0236\u011b\u0000\u0f3f\u0f3b\u0001\u0000\u0000\u0000\u0f3f\u0f3c"+
54488 		"\u0001\u0000\u0000\u0000\u0f40\u0233\u0001\u0000\u0000\u0000\u0f41\u0f47"+
54489 		"\u0005\u015b\u0000\u0000\u0f42\u0f47\u0003\u00d2i\u0000\u0f43\u0f47\u0005"+
54490 		"\u0205\u0000\u0000\u0f44\u0f47\u0005\u01f6\u0000\u0000\u0f45\u0f47\u0001"+
54491 		"\u0000\u0000\u0000\u0f46\u0f41\u0001\u0000\u0000\u0000\u0f46\u0f42\u0001"+
54492 		"\u0000\u0000\u0000\u0f46\u0f43\u0001\u0000\u0000\u0000\u0f46\u0f44\u0001"+
54493 		"\u0000\u0000\u0000\u0f46\u0f45\u0001\u0000\u0000\u0000\u0f47\u0235\u0001"+
54494 		"\u0000\u0000\u0000\u0f48\u0f49\u0003N\'\u0000\u0f49\u0f4a\u0005\u0014"+
54495 		"\u0000\u0000\u0f4a\u0f4b\u0003N\'\u0000\u0f4b\u0f4c\u0005\u0014\u0000"+
54496 		"\u0000\u0f4c\u0f4d\u0003N\'\u0000\u0f4d\u0237\u0001\u0000\u0000\u0000"+
54497 		"\u0f4e\u0f54\u0003@ \u0000\u0f4f\u0f54\u0003:\u001d\u0000\u0f50\u0f51"+
54498 		"\u0005p\u0000\u0000\u0f51\u0f54\u0005\u013a\u0000\u0000\u0f52\u0f54\u0005"+
54499 		"\u00ca\u0000\u0000\u0f53\u0f4e\u0001\u0000\u0000\u0000\u0f53\u0f4f\u0001"+
54500 		"\u0000\u0000\u0000\u0f53\u0f50\u0001\u0000\u0000\u0000\u0f53\u0f52\u0001"+
54501 		"\u0000\u0000\u0000\u0f54\u0239\u0001\u0000\u0000\u0000\u0f55\u0f56\u0005"+
54502 		"_\u0000\u0000\u0f56\u0f72\u0003\u0094J\u0000\u0f57\u0f58\u00073\u0000"+
54503 		"\u0000\u0f58\u0f59\u0005L\u0000\u0000\u0f59\u0f72\u0003b1\u0000\u0f5a"+
54504 		"\u0f5b\u0005\u020a\u0000\u0000\u0f5b\u0f5c\u0005u\u0000\u0000\u0f5c\u0f72"+
54505 		"\u0003b1\u0000\u0f5d\u0f5f\u0005\u020d\u0000\u0000\u0f5e\u0f60\u0003b"+
54506 		"1\u0000\u0f5f\u0f5e\u0001\u0000\u0000\u0000\u0f5f\u0f60\u0001\u0000\u0000"+
54507 		"\u0000\u0f60\u0f72\u0001\u0000\u0000\u0000\u0f61\u0f62\u0005\u00e5\u0000"+
54508 		"\u0000\u0f62\u0f72\u0005\u020d\u0000\u0000\u0f63\u0f65\u0005\u020e\u0000"+
54509 		"\u0000\u0f64\u0f66\u0003b1\u0000\u0f65\u0f64\u0001\u0000\u0000\u0000\u0f65"+
54510 		"\u0f66\u0001\u0000\u0000\u0000\u0f66\u0f72\u0001\u0000\u0000\u0000\u0f67"+
54511 		"\u0f68\u0005\u00e5\u0000\u0000\u0f68\u0f72\u0005\u020e\u0000\u0000\u0f69"+
54512 		"\u0f6a\u0005\u020c\u0000\u0000\u0f6a\u0f72\u0003b1\u0000\u0f6b\u0f6c\u0005"+
54513 		"\u00e5\u0000\u0000\u0f6c\u0f72\u0005\u020c\u0000\u0000\u0f6d\u0f6f\u0005"+
54514 		"\u00e5\u0000\u0000\u0f6e\u0f6d\u0001\u0000\u0000\u0000\u0f6e\u0f6f\u0001"+
54515 		"\u0000\u0000\u0000\u0f6f\u0f70\u0001\u0000\u0000\u0000\u0f70\u0f72\u0005"+
54516 		"\u020b\u0000\u0000\u0f71\u0f55\u0001\u0000\u0000\u0000\u0f71\u0f57\u0001"+
54517 		"\u0000\u0000\u0000\u0f71\u0f5a\u0001\u0000\u0000\u0000\u0f71\u0f5d\u0001"+
54518 		"\u0000\u0000\u0000\u0f71\u0f61\u0001\u0000\u0000\u0000\u0f71\u0f63\u0001"+
54519 		"\u0000\u0000\u0000\u0f71\u0f67\u0001\u0000\u0000\u0000\u0f71\u0f69\u0001"+
54520 		"\u0000\u0000\u0000\u0f71\u0f6b\u0001\u0000\u0000\u0000\u0f71\u0f6e\u0001"+
54521 		"\u0000\u0000\u0000\u0f72\u023b\u0001\u0000\u0000\u0000\u0f73\u0f74\u0005"+
54522 		"\u0216\u0000\u0000\u0f74\u0f76\u0003R)\u0000\u0f75\u0f73\u0001\u0000\u0000"+
54523 		"\u0000\u0f75\u0f76\u0001\u0000\u0000\u0000\u0f76\u0f79\u0001\u0000\u0000"+
54524 		"\u0000\u0f77\u0f78\u0005^\u0000\u0000\u0f78\u0f7a\u0003\u023e\u011f\u0000"+
54525 		"\u0f79\u0f77\u0001\u0000\u0000\u0000\u0f79\u0f7a\u0001\u0000\u0000\u0000"+
54526 		"\u0f7a\u0f87\u0001\u0000\u0000\u0000\u0f7b\u0f7c\u0005L\u0000\u0000\u0f7c"+
54527 		"\u0f7d\u0005\u001f\u0000\u0000\u0f7d\u0f82\u0003\u0244\u0122\u0000\u0f7e"+
54528 		"\u0f7f\u0005%\u0000\u0000\u0f7f\u0f81\u0003\u0244\u0122\u0000\u0f80\u0f7e"+
54529 		"\u0001\u0000\u0000\u0000\u0f81\u0f84\u0001\u0000\u0000\u0000\u0f82\u0f80"+
54530 		"\u0001\u0000\u0000\u0000\u0f82\u0f83\u0001\u0000\u0000\u0000\u0f83\u0f85"+
54531 		"\u0001\u0000\u0000\u0000\u0f84\u0f82\u0001\u0000\u0000\u0000\u0f85\u0f86"+
54532 		"\u0005 \u0000\u0000\u0f86\u0f88\u0001\u0000\u0000\u0000\u0f87\u0f7b\u0001"+
54533 		"\u0000\u0000\u0000\u0f87\u0f88\u0001\u0000\u0000\u0000\u0f88\u0f92\u0001"+
54534 		"\u0000\u0000\u0000\u0f89\u0f90\u0005`\u0000\u0000\u0f8a\u0f8b\u00034\u001a"+
54535 		"\u0000\u0f8b\u0f8c\u0005\u001f\u0000\u0000\u0f8c\u0f8d\u0003H$\u0000\u0f8d"+
54536 		"\u0f8e\u0005 \u0000\u0000\u0f8e\u0f91\u0001\u0000\u0000\u0000\u0f8f\u0f91"+
54537 		"\u0003N\'\u0000\u0f90\u0f8a\u0001\u0000\u0000\u0000\u0f90\u0f8f\u0001"+
54538 		"\u0000\u0000\u0000\u0f91\u0f93\u0001\u0000\u0000\u0000\u0f92\u0f89\u0001"+
54539 		"\u0000\u0000\u0000\u0f92\u0f93\u0001\u0000\u0000\u0000\u0f93\u0f99\u0001"+
54540 		"\u0000\u0000\u0000\u0f94\u0f97\u0005\u0198\u0000\u0000\u0f95\u0f98\u0003"+
54541 		"N\'\u0000\u0f96\u0f98\u0003\u001c\u000e\u0000\u0f97\u0f95\u0001\u0000"+
54542 		"\u0000\u0000\u0f97\u0f96\u0001\u0000\u0000\u0000\u0f98\u0f9a\u0001\u0000"+
54543 		"\u0000\u0000\u0f99\u0f94\u0001\u0000\u0000\u0000\u0f99\u0f9a\u0001\u0000"+
54544 		"\u0000\u0000\u0f9a\u023d\u0001\u0000\u0000\u0000\u0f9b\u0fa0\u0003\u0240"+
54545 		"\u0120\u0000\u0f9c\u0f9d\u0005f\u0000\u0000\u0f9d\u0f9f\u0003\u0240\u0120"+
54546 		"\u0000\u0f9e\u0f9c\u0001\u0000\u0000\u0000\u0f9f\u0fa2\u0001\u0000\u0000"+
54547 		"\u0000\u0fa0\u0f9e\u0001\u0000\u0000\u0000\u0fa0\u0fa1\u0001\u0000\u0000"+
54548 		"\u0000\u0fa1\u023f\u0001\u0000\u0000\u0000\u0fa2\u0fa0\u0001\u0000\u0000"+
54549 		"\u0000\u0fa3\u0fa4\u0003H$\u0000\u0fa4\u0fa5\u0005o\u0000\u0000\u0fa5"+
54550 		"\u0fa6\u0005\u001f\u0000\u0000\u0fa6\u0fab\u0003b1\u0000\u0fa7\u0fa8\u0005"+
54551 		"%\u0000\u0000\u0fa8\u0faa\u0003b1\u0000\u0fa9\u0fa7\u0001\u0000\u0000"+
54552 		"\u0000\u0faa\u0fad\u0001\u0000\u0000\u0000\u0fab\u0fa9\u0001\u0000\u0000"+
54553 		"\u0000\u0fab\u0fac\u0001\u0000\u0000\u0000\u0fac\u0fae\u0001\u0000\u0000"+
54554 		"\u0000\u0fad\u0fab\u0001\u0000\u0000\u0000\u0fae\u0faf\u0005 \u0000\u0000"+
54555 		"\u0faf\u0fb5\u0001\u0000\u0000\u0000\u0fb0\u0fb1\u0003H$\u0000\u0fb1\u0fb2"+
54556 		"\u0003l6\u0000\u0fb2\u0fb3\u0003b1\u0000\u0fb3\u0fb5\u0001\u0000\u0000"+
54557 		"\u0000\u0fb4\u0fa3\u0001\u0000\u0000\u0000\u0fb4\u0fb0\u0001\u0000\u0000"+
54558 		"\u0000\u0fb5\u0241\u0001\u0000\u0000\u0000\u0fb6\u0fbd\u0005\u011f\u0000"+
54559 		"\u0000\u0fb7\u0fb8\u0005\u00da\u0000\u0000\u0fb8\u0fbb\u0005\u0018\u0000"+
54560 		"\u0000\u0fb9\u0fbc\u0005p\u0000\u0000\u0fba\u0fbc\u0003b1\u0000\u0fbb"+
54561 		"\u0fb9\u0001\u0000\u0000\u0000\u0fbb\u0fba\u0001\u0000\u0000\u0000\u0fbc"+
54562 		"\u0fbe\u0001\u0000\u0000\u0000\u0fbd\u0fb7\u0001\u0000\u0000\u0000\u0fbd"+
54563 		"\u0fbe\u0001\u0000\u0000\u0000\u0fbe\u0fcb\u0001\u0000\u0000\u0000\u0fbf"+
54564 		"\u0fc0\u0005L\u0000\u0000\u0fc0\u0fc1\u0005\u001f\u0000\u0000\u0fc1\u0fc6"+
54565 		"\u0003\u0244\u0122\u0000\u0fc2\u0fc3\u0005%\u0000\u0000\u0fc3\u0fc5\u0003"+
54566 		"\u0244\u0122\u0000\u0fc4\u0fc2\u0001\u0000\u0000\u0000\u0fc5\u0fc8\u0001"+
54567 		"\u0000\u0000\u0000\u0fc6\u0fc4\u0001\u0000\u0000\u0000\u0fc6\u0fc7\u0001"+
54568 		"\u0000\u0000\u0000\u0fc7\u0fc9\u0001\u0000\u0000\u0000\u0fc8\u0fc6\u0001"+
54569 		"\u0000\u0000\u0000\u0fc9\u0fca\u0005 \u0000\u0000\u0fca\u0fcc\u0001\u0000"+
54570 		"\u0000\u0000\u0fcb\u0fbf\u0001\u0000\u0000\u0000\u0fcb\u0fcc\u0001\u0000"+
54571 		"\u0000\u0000\u0fcc\u0ff5\u0001\u0000\u0000\u0000\u0fcd\u0ff5\u0005\u009b"+
54572 		"\u0000\u0000\u0fce\u0fd2\u0005\u0212\u0000\u0000\u0fcf\u0fd0\u0005\u00da"+
54573 		"\u0000\u0000\u0fd0\u0fd1\u0005\u0018\u0000\u0000\u0fd1\u0fd3\u0003b1\u0000"+
54574 		"\u0fd2\u0fcf\u0001\u0000\u0000\u0000\u0fd2\u0fd3\u0001\u0000\u0000\u0000"+
54575 		"\u0fd3\u0fd9\u0001\u0000\u0000\u0000\u0fd4\u0fd5\u0005L\u0000\u0000\u0fd5"+
54576 		"\u0fd6\u0005\u001f\u0000\u0000\u0fd6\u0fd7\u0003\u0248\u0124\u0000\u0fd7"+
54577 		"\u0fd8\u0005 \u0000\u0000\u0fd8\u0fda\u0001\u0000\u0000\u0000\u0fd9\u0fd4"+
54578 		"\u0001\u0000\u0000\u0000\u0fd9\u0fda\u0001\u0000\u0000\u0000\u0fda\u0ff5"+
54579 		"\u0001\u0000\u0000\u0000\u0fdb\u0fdc\u0005:\u0000\u0000\u0fdc\u0fdd\u0005"+
54580 		"\u001f\u0000\u0000\u0fdd\u0fde\u0003\u024a\u0125\u0000\u0fde\u0fdf\u0005"+
54581 		"%\u0000\u0000\u0fdf\u0fe0\u0003\u024a\u0125\u0000\u0fe0\u0fe1\u0001\u0000"+
54582 		"\u0000\u0000\u0fe1\u0fe2\u0005 \u0000\u0000\u0fe2\u0ff5\u0001\u0000\u0000"+
54583 		"\u0000\u0fe3\u0ff0\u0005\u0213\u0000\u0000\u0fe4\u0fe5\u0005L\u0000\u0000"+
54584 		"\u0fe5\u0fe6\u0005\u001f\u0000\u0000\u0fe6\u0feb\u0003\u024c\u0126\u0000"+
54585 		"\u0fe7\u0fe8\u0005%\u0000\u0000\u0fe8\u0fea\u0003\u024c\u0126\u0000\u0fe9"+
54586 		"\u0fe7\u0001\u0000\u0000\u0000\u0fea\u0fed\u0001\u0000\u0000\u0000\u0feb"+
54587 		"\u0fe9\u0001\u0000\u0000\u0000\u0feb\u0fec\u0001\u0000\u0000\u0000\u0fec"+
54588 		"\u0fee\u0001\u0000\u0000\u0000\u0fed\u0feb\u0001\u0000\u0000\u0000\u0fee"+
54589 		"\u0fef\u0005 \u0000\u0000\u0fef\u0ff1\u0001\u0000\u0000\u0000\u0ff0\u0fe4"+
54590 		"\u0001\u0000\u0000\u0000\u0ff0\u0ff1\u0001\u0000\u0000\u0000\u0ff1\u0ff5"+
54591 		"\u0001\u0000\u0000\u0000\u0ff2\u0ff5\u0005\u0214\u0000\u0000\u0ff3\u0ff5"+
54592 		"\u0005\u0215\u0000\u0000\u0ff4\u0fb6\u0001\u0000\u0000\u0000\u0ff4\u0fcd"+
54593 		"\u0001\u0000\u0000\u0000\u0ff4\u0fce\u0001\u0000\u0000\u0000\u0ff4\u0fdb"+
54594 		"\u0001\u0000\u0000\u0000\u0ff4\u0fe3\u0001\u0000\u0000\u0000\u0ff4\u0ff2"+
54595 		"\u0001\u0000\u0000\u0000\u0ff4\u0ff3\u0001\u0000\u0000\u0000\u0ff5\u0243"+
54596 		"\u0001\u0000\u0000\u0000\u0ff6\u0ff7\u0005\u0196\u0000\u0000\u0ff7\u0ff8"+
54597 		"\u0005\u0018\u0000\u0000\u0ff8\u103a\u0007\u0000\u0000\u0000\u0ff9\u0ffa"+
54598 		"\u0005\u0105\u0000\u0000\u0ffa\u0ffb\u0005\u0018\u0000\u0000\u0ffb\u103a"+
54599 		"\u0003b1\u0000\u0ffc\u0ffd\u0005\u0190\u0000\u0000\u0ffd\u0ffe\u0005\u0018"+
54600 		"\u0000\u0000\u0ffe\u103a\u0007\u0000\u0000\u0000\u0fff\u1000\u0005\u0191"+
54601 		"\u0000\u0000\u1000\u1001\u0005\u0018\u0000\u0000\u1001\u103a\u0007\u0000"+
54602 		"\u0000\u0000\u1002\u1003\u0005\u018c\u0000\u0000\u1003\u1004\u0005\u0018"+
54603 		"\u0000\u0000\u1004\u103a\u0007\u0000\u0000\u0000\u1005\u1006\u0005\u018b"+
54604 		"\u0000\u0000\u1006\u1007\u0005\u0018\u0000\u0000\u1007\u103a\u0007\u0000"+
54605 		"\u0000\u0000\u1008\u1009\u0005\u01a2\u0000\u0000\u1009\u100a\u0005\u0018"+
54606 		"\u0000\u0000\u100a\u103a\u0007\u0000\u0000\u0000\u100b\u100c\u0005\u0116"+
54607 		"\u0000\u0000\u100c\u1012\u0005\u0018\u0000\u0000\u100d\u100f\u0005`\u0000"+
54608 		"\u0000\u100e\u1010\u0003\u00c6c\u0000\u100f\u100e\u0001\u0000\u0000\u0000"+
54609 		"\u100f\u1010\u0001\u0000\u0000\u0000\u1010\u1013\u0001\u0000\u0000\u0000"+
54610 		"\u1011\u1013\u0005\u0115\u0000\u0000\u1012\u100d\u0001\u0000\u0000\u0000"+
54611 		"\u1012\u1011\u0001\u0000\u0000\u0000\u1013\u103a\u0001\u0000\u0000\u0000"+
54612 		"\u1014\u1015\u0005\u0122\u0000\u0000\u1015\u1016\u0005\u0018\u0000\u0000"+
54613 		"\u1016\u103a\u0007\u0000\u0000\u0000\u1017\u1018\u0005\u0193\u0000\u0000"+
54614 		"\u1018\u1019\u0005\u0018\u0000\u0000\u1019\u101b\u0003b1\u0000\u101a\u101c"+
54615 		"\u0005\u00fb\u0000\u0000\u101b\u101a\u0001\u0000\u0000\u0000\u101b\u101c"+
54616 		"\u0001\u0000\u0000\u0000\u101c\u103a\u0001\u0000\u0000\u0000\u101d\u101e"+
54617 		"\u0005\u017c\u0000\u0000\u101e\u101f\u0005\u0018\u0000\u0000\u101f\u103a"+
54618 		"\u0007\u0000\u0000\u0000\u1020\u1021\u0005\u017b\u0000\u0000\u1021\u1022"+
54619 		"\u0005\u0018\u0000\u0000\u1022\u103a\u0007\u0000\u0000\u0000\u1023\u1024"+
54620 		"\u0005\u01d8\u0000\u0000\u1024\u1025\u0005\u0018\u0000\u0000\u1025\u103a"+
54621 		"\u0007\u0000\u0000\u0000\u1026\u1027\u0005\u0110\u0000\u0000\u1027\u1028"+
54622 		"\u0005\u0018\u0000\u0000\u1028\u103a\u0003b1\u0000\u1029\u102a\u0005\u0184"+
54623 		"\u0000\u0000\u102a\u102b\u0005\u0018\u0000\u0000\u102b\u1037\u0007\u0017"+
54624 		"\u0000\u0000\u102c\u102d\u0005`\u0000\u0000\u102d\u102e\u0005\u00db\u0000"+
54625 		"\u0000\u102e\u102f\u0005\u001f\u0000\u0000\u102f\u1034\u0003\u0246\u0123"+
54626 		"\u0000\u1030\u1031\u0005%\u0000\u0000\u1031\u1033\u0003\u0246\u0123\u0000"+
54627 		"\u1032\u1030\u0001\u0000\u0000\u0000\u1033\u1036\u0001\u0000\u0000\u0000"+
54628 		"\u1034\u1032\u0001\u0000\u0000\u0000\u1034\u1035\u0001\u0000\u0000\u0000"+
54629 		"\u1035\u1038\u0001\u0000\u0000\u0000\u1036\u1034\u0001\u0000\u0000\u0000"+
54630 		"\u1037\u102c\u0001\u0000\u0000\u0000\u1037\u1038\u0001\u0000\u0000\u0000"+
54631 		"\u1038\u103a\u0001\u0000\u0000\u0000\u1039\u0ff6\u0001\u0000\u0000\u0000"+
54632 		"\u1039\u0ff9\u0001\u0000\u0000\u0000\u1039\u0ffc\u0001\u0000\u0000\u0000"+
54633 		"\u1039\u0fff\u0001\u0000\u0000\u0000\u1039\u1002\u0001\u0000\u0000\u0000"+
54634 		"\u1039\u1005\u0001\u0000\u0000\u0000\u1039\u1008\u0001\u0000\u0000\u0000"+
54635 		"\u1039\u100b\u0001\u0000\u0000\u0000\u1039\u1014\u0001\u0000\u0000\u0000"+
54636 		"\u1039\u1017\u0001\u0000\u0000\u0000\u1039\u101d\u0001\u0000\u0000\u0000"+
54637 		"\u1039\u1020\u0001\u0000\u0000\u0000\u1039\u1023\u0001\u0000\u0000\u0000"+
54638 		"\u1039\u1026\u0001\u0000\u0000\u0000\u1039\u1029\u0001\u0000\u0000\u0000"+
54639 		"\u103a\u0245\u0001\u0000\u0000\u0000\u103b\u103e\u0003b1\u0000\u103c\u103d"+
54640 		"\u0005e\u0000\u0000\u103d\u103f\u0003b1\u0000\u103e\u103c\u0001\u0000"+
54641 		"\u0000\u0000\u103e\u103f\u0001\u0000\u0000\u0000\u103f\u0247\u0001\u0000"+
54642 		"\u0000\u0000\u1040\u1041\u0005\u0210\u0000\u0000\u1041\u1042\u0005\u0018"+
54643 		"\u0000\u0000\u1042\u1047\u0007\u0000\u0000\u0000\u1043\u1044\u0005\u0211"+
54644 		"\u0000\u0000\u1044\u1045\u0005\u0018\u0000\u0000\u1045\u1047\u0007\u0000"+
54645 		"\u0000\u0000\u1046\u1040\u0001\u0000\u0000\u0000\u1046\u1043\u0001\u0000"+
54646 		"\u0000\u0000\u1047\u0249\u0001\u0000\u0000\u0000\u1048\u1049\u0005\u017c"+
54647 		"\u0000\u0000\u1049\u104a\u0005\u0018\u0000\u0000\u104a\u105e\u0007\u0000"+
54648 		"\u0000\u0000\u104b\u104c\u0005\u017b\u0000\u0000\u104c\u104d\u0005\u0018"+
54649 		"\u0000\u0000\u104d\u105e\u0007\u0000\u0000\u0000\u104e\u104f\u0005\u01d8"+
54650 		"\u0000\u0000\u104f\u1050\u0005\u0018\u0000\u0000\u1050\u105e\u0007\u0000"+
54651 		"\u0000\u0000\u1051\u1052\u0005\u0191\u0000\u0000\u1052\u1053\u0005\u0018"+
54652 		"\u0000\u0000\u1053\u105e\u0007\u0000\u0000\u0000\u1054\u1055\u0005\u018c"+
54653 		"\u0000\u0000\u1055\u1056\u0005\u0018\u0000\u0000\u1056\u105e\u0007\u0000"+
54654 		"\u0000\u0000\u1057\u1058\u0005\u0182\u0000\u0000\u1058\u1059\u0005\u0018"+
54655 		"\u0000\u0000\u1059\u105b\u0003b1\u0000\u105a\u105c\u0005\u00fb\u0000\u0000"+
54656 		"\u105b\u105a\u0001\u0000\u0000\u0000\u105b\u105c\u0001\u0000\u0000\u0000"+
54657 		"\u105c\u105e\u0001\u0000\u0000\u0000\u105d\u1048\u0001\u0000\u0000\u0000"+
54658 		"\u105d\u104b\u0001\u0000\u0000\u0000\u105d\u104e\u0001\u0000\u0000\u0000"+
54659 		"\u105d\u1051\u0001\u0000\u0000\u0000\u105d\u1054\u0001\u0000\u0000\u0000"+
54660 		"\u105d\u1057\u0001\u0000\u0000\u0000\u105e\u024b\u0001\u0000\u0000\u0000"+
54661 		"\u105f\u1060\u0005\u0110\u0000\u0000\u1060\u1061\u0005\u0018\u0000\u0000"+
54662 		"\u1061\u106a\u0003b1\u0000\u1062\u1063\u0005\u0193\u0000\u0000\u1063\u1064"+
54663 		"\u0005\u0018\u0000\u0000\u1064\u1066\u0003b1\u0000\u1065\u1067\u0005\u00fb"+
54664 		"\u0000\u0000\u1066\u1065\u0001\u0000\u0000\u0000\u1066\u1067\u0001\u0000"+
54665 		"\u0000\u0000\u1067\u106a\u0001\u0000\u0000\u0000\u1068\u106a\u0003\u00c6"+
54666 		"c\u0000\u1069\u105f\u0001\u0000\u0000\u0000\u1069\u1062\u0001\u0000\u0000"+
54667 		"\u0000\u1069\u1068\u0001\u0000\u0000\u0000\u106a\u024d\u0001\u0000\u0000"+
54668 		"\u0000\u106b\u106c\u0005\u021f\u0000\u0000\u106c\u106d\u0005\u00a8\u0000"+
54669 		"\u0000\u106d\u106e\u0005\u0018\u0000\u0000\u106e\u10a2\u00032\u0019\u0000"+
54670 		"\u106f\u1070\u0005\u00f3\u0000\u0000\u1070\u10a2\u0003\u00cae\u0000\u1071"+
54671 		"\u10a2\u0003\u0258\u012c\u0000\u1072\u1073\u0005:\u0000\u0000\u1073\u1078"+
54672 		"\u0003\u0256\u012b\u0000\u1074\u1075\u0005%\u0000\u0000\u1075\u1077\u0003"+
54673 		"\u0256\u012b\u0000\u1076\u1074\u0001\u0000\u0000\u0000\u1077\u107a\u0001"+
54674 		"\u0000\u0000\u0000\u1078\u1076\u0001\u0000\u0000\u0000\u1078\u1079\u0001"+
54675 		"\u0000\u0000\u0000\u1079\u107d\u0001\u0000\u0000\u0000\u107a\u1078\u0001"+
54676 		"\u0000\u0000\u0000\u107b\u107c\u0005L\u0000\u0000\u107c\u107e\u0003\u027e"+
54677 		"\u013f\u0000\u107d\u107b\u0001\u0000\u0000\u0000\u107d\u107e\u0001\u0000"+
54678 		"\u0000\u0000\u107e\u10a2\u0001\u0000\u0000\u0000\u107f\u1080\u0005\u021f"+
54679 		"\u0000\u0000\u1080\u1081\u0005\u001f\u0000\u0000\u1081\u1086\u0003\u0252"+
54680 		"\u0129\u0000\u1082\u1083\u0005%\u0000\u0000\u1083\u1085\u0003\u0252\u0129"+
54681 		"\u0000\u1084\u1082\u0001\u0000\u0000\u0000\u1085\u1088\u0001\u0000\u0000"+
54682 		"\u0000\u1086\u1084\u0001\u0000\u0000\u0000\u1086\u1087\u0001\u0000\u0000"+
54683 		"\u0000\u1087\u1089\u0001\u0000\u0000\u0000\u1088\u1086\u0001\u0000\u0000"+
54684 		"\u0000\u1089\u108a\u0005 \u0000\u0000\u108a\u10a2\u0001\u0000\u0000\u0000"+
54685 		"\u108b\u108c\u0005\u021f\u0000\u0000\u108c\u108d\u0005\u0272\u0000\u0000"+
54686 		"\u108d\u108e\u0005\u0018\u0000\u0000\u108e\u10a2\u0005\u02ae\u0000\u0000"+
54687 		"\u108f\u1090\u00059\u0000\u0000\u1090\u1091\u0005\u0274\u0000\u0000\u1091"+
54688 		"\u1092\u0005`\u0000\u0000\u1092\u1093\u0005\u013a\u0000\u0000\u1093\u109d"+
54689 		"\u0003\u00cae\u0000\u1094\u1095\u0005L\u0000\u0000\u1095\u109a\u0003\u0250"+
54690 		"\u0128\u0000\u1096\u1097\u0005%\u0000\u0000\u1097\u1099\u0003\u0250\u0128"+
54691 		"\u0000\u1098\u1096\u0001\u0000\u0000\u0000\u1099\u109c\u0001\u0000\u0000"+
54692 		"\u0000\u109a\u1098\u0001\u0000\u0000\u0000\u109a\u109b\u0001\u0000\u0000"+
54693 		"\u0000\u109b\u109e\u0001\u0000\u0000\u0000\u109c\u109a\u0001\u0000\u0000"+
54694 		"\u0000\u109d\u1094\u0001\u0000\u0000\u0000\u109d\u109e\u0001\u0000\u0000"+
54695 		"\u0000\u109e\u10a2\u0001\u0000\u0000\u0000\u109f\u10a2\u0005\u0275\u0000"+
54696 		"\u0000\u10a0\u10a2\u0005\u0273\u0000\u0000\u10a1\u106b\u0001\u0000\u0000"+
54697 		"\u0000\u10a1\u106f\u0001\u0000\u0000\u0000\u10a1\u1071\u0001\u0000\u0000"+
54698 		"\u0000\u10a1\u1072\u0001\u0000\u0000\u0000\u10a1\u107f\u0001\u0000\u0000"+
54699 		"\u0000\u10a1\u108b\u0001\u0000\u0000\u0000\u10a1\u108f\u0001\u0000\u0000"+
54700 		"\u0000\u10a1\u109f\u0001\u0000\u0000\u0000\u10a1\u10a0\u0001\u0000\u0000"+
54701 		"\u0000\u10a2\u024f\u0001\u0000\u0000\u0000\u10a3\u10a4\u0005\u026e\u0000"+
54702 		"\u0000\u10a4\u10a5\u0005\u0018\u0000\u0000\u10a5\u10b0\u00074\u0000\u0000"+
54703 		"\u10a6\u10a7\u0005\u026c\u0000\u0000\u10a7\u10ad\u0005\u0018\u0000\u0000"+
54704 		"\u10a8\u10ae\u0003\u0254\u012a\u0000\u10a9\u10aa\u0005\u026d\u0000\u0000"+
54705 		"\u10aa\u10ab\u0005\u0018\u0000\u0000\u10ab\u10ae\u00032\u0019\u0000\u10ac"+
54706 		"\u10ae\u00075\u0000\u0000\u10ad\u10a8\u0001\u0000\u0000\u0000\u10ad\u10a9"+
54707 		"\u0001\u0000\u0000\u0000\u10ad\u10ac\u0001\u0000\u0000\u0000\u10ae\u10b0"+
54708 		"\u0001\u0000\u0000\u0000\u10af\u10a3\u0001\u0000\u0000\u0000\u10af\u10a6"+
54709 		"\u0001\u0000\u0000\u0000\u10b0\u0251\u0001\u0000\u0000\u0000\u10b1\u10b2"+
54710 		"\u0005\u01e0\u0000\u0000\u10b2\u10b3\u0005\u0018\u0000\u0000\u10b3\u10b4"+
54711 		"\u0005\u02af\u0000\u0000\u10b4\u10bf\u00076\u0000\u0000\u10b5\u10b6\u0005"+
54712 		"\u025f\u0000\u0000\u10b6\u10b7\u0005\u0018\u0000\u0000\u10b7\u10bf\u0005"+
54713 		"\u02ae\u0000\u0000\u10b8\u10b9\u0005\u026c\u0000\u0000\u10b9\u10bc\u0005"+
54714 		"\u0018\u0000\u0000\u10ba\u10bd\u0005\u02ae\u0000\u0000\u10bb\u10bd\u0003"+
54715 		"\u0254\u012a\u0000\u10bc\u10ba\u0001\u0000\u0000\u0000\u10bc\u10bb\u0001"+
54716 		"\u0000\u0000\u0000\u10bd\u10bf\u0001\u0000\u0000\u0000\u10be\u10b1\u0001"+
54717 		"\u0000\u0000\u0000\u10be\u10b5\u0001\u0000\u0000\u0000\u10be\u10b8\u0001"+
54718 		"\u0000\u0000\u0000\u10bf\u0253\u0001\u0000\u0000\u0000\u10c0\u10c9\u0005"+
54719 		"\u02ae\u0000\u0000\u10c1\u10c2\u0005\u026b\u0000\u0000\u10c2\u10c3\u0005"+
54720 		"\u001f\u0000\u0000\u10c3\u10c4\u0003\u00cae\u0000\u10c4\u10c5\u0005\u0018"+
54721 		"\u0000\u0000\u10c5\u10c6\u0005\u02ae\u0000\u0000\u10c6\u10c7\u0005 \u0000"+
54722 		"\u0000\u10c7\u10c9\u0001\u0000\u0000\u0000\u10c8\u10c0\u0001\u0000\u0000"+
54723 		"\u0000\u10c8\u10c1\u0001\u0000\u0000\u0000\u10c9\u0255\u0001\u0000\u0000"+
54724 		"\u0000\u10ca\u10f6\u0003\u0260\u0130\u0000\u10cb\u10f6\u0003\u0262\u0131"+
54725 		"\u0000\u10cc\u10f6\u0003\u0264\u0132\u0000\u10cd\u10f6\u0003\u0266\u0133"+
54726 		"\u0000\u10ce\u10cf\u0005\u01dc\u0000\u0000\u10cf\u10d0\u0005\u0018\u0000"+
54727 		"\u0000\u10d0\u10f6\u0007*\u0000\u0000\u10d1\u10f6\u0003\u026a\u0135\u0000"+
54728 		"\u10d2\u10d3\u0005\u026a\u0000\u0000\u10d3\u10f6\u0007\u0000\u0000\u0000"+
54729 		"\u10d4\u10d5\u0005\u015b\u0000\u0000\u10d5\u10f6\u00077\u0000\u0000\u10d6"+
54730 		"\u10f6\u00078\u0000\u0000\u10d7\u10f6\u00079\u0000\u0000\u10d8\u10f6\u0007"+
54731 		":\u0000\u0000\u10d9\u10da\u0005\u027f\u0000\u0000\u10da\u10db\u0005\u0018"+
54732 		"\u0000\u0000\u10db\u10f6\u0007;\u0000\u0000\u10dc\u10f6\u0003\u026c\u0136"+
54733 		"\u0000\u10dd\u10de\u0005\u0103\u0000\u0000\u10de\u10df\u0005\u001f\u0000"+
54734 		"\u0000\u10df\u10e0\u0003\u01e4\u00f2\u0000\u10e0\u10e1\u0005 \u0000\u0000"+
54735 		"\u10e1\u10f6\u0001\u0000\u0000\u0000\u10e2\u10e3\u00053\u0000\u0000\u10e3"+
54736 		"\u10e4\u0005\u00ca\u0000\u0000\u10e4\u10e5\u0005:\u0000\u0000\u10e5\u10f6"+
54737 		"\u0005\u0263\u0000\u0000\u10e6\u10e7\u0005\u0260\u0000\u0000\u10e7\u10f6"+
54738 		"\u0007\u0000\u0000\u0000\u10e8\u10e9\u0005\u01d4\u0000\u0000\u10e9\u10f6"+
54739 		"\u0007<\u0000\u0000\u10ea\u10f6\u0003\u026e\u0137\u0000\u10eb\u10f6\u0003"+
54740 		"\u0274\u013a\u0000\u10ec\u10f6\u0003\u027a\u013d\u0000\u10ed\u10f6\u0003"+
54741 		"\u0278\u013c\u0000\u10ee\u10f6\u0003\u0276\u013b\u0000\u10ef\u10f6\u0003"+
54742 		"\u027c\u013e\u0000\u10f0\u10f6\u0003\u027e\u013f\u0000\u10f1\u10f2\u0005"+
54743 		"\u025e\u0000\u0000\u10f2\u10f6\u0007\u0000\u0000\u0000\u10f3\u10f4\u0005"+
54744 		"\u025d\u0000\u0000\u10f4\u10f6\u0007\u0000\u0000\u0000\u10f5\u10ca\u0001"+
54745 		"\u0000\u0000\u0000\u10f5\u10cb\u0001\u0000\u0000\u0000\u10f5\u10cc\u0001"+
54746 		"\u0000\u0000\u0000\u10f5\u10cd\u0001\u0000\u0000\u0000\u10f5\u10ce\u0001"+
54747 		"\u0000\u0000\u0000\u10f5\u10d1\u0001\u0000\u0000\u0000\u10f5\u10d2\u0001"+
54748 		"\u0000\u0000\u0000\u10f5\u10d4\u0001\u0000\u0000\u0000\u10f5\u10d6\u0001"+
54749 		"\u0000\u0000\u0000\u10f5\u10d7\u0001\u0000\u0000\u0000\u10f5\u10d8\u0001"+
54750 		"\u0000\u0000\u0000\u10f5\u10d9\u0001\u0000\u0000\u0000\u10f5\u10dc\u0001"+
54751 		"\u0000\u0000\u0000\u10f5\u10dd\u0001\u0000\u0000\u0000\u10f5\u10e2\u0001"+
54752 		"\u0000\u0000\u0000\u10f5\u10e6\u0001\u0000\u0000\u0000\u10f5\u10e8\u0001"+
54753 		"\u0000\u0000\u0000\u10f5\u10ea\u0001\u0000\u0000\u0000\u10f5\u10eb\u0001"+
54754 		"\u0000\u0000\u0000\u10f5\u10ec\u0001\u0000\u0000\u0000\u10f5\u10ed\u0001"+
54755 		"\u0000\u0000\u0000\u10f5\u10ee\u0001\u0000\u0000\u0000\u10f5\u10ef\u0001"+
54756 		"\u0000\u0000\u0000\u10f5\u10f0\u0001\u0000\u0000\u0000\u10f5\u10f1\u0001"+
54757 		"\u0000\u0000\u0000\u10f5\u10f3\u0001\u0000\u0000\u0000\u10f6\u0257\u0001"+
54758 		"\u0000\u0000\u0000\u10f7\u10fc\u0003\u025e\u012f\u0000\u10f8\u10fc\u0003"+
54759 		"\u01e6\u00f3\u0000\u10f9\u10fc\u0003\u025a\u012d\u0000\u10fa\u10fc\u0003"+
54760 		"\u025c\u012e\u0000\u10fb\u10f7\u0001\u0000\u0000\u0000\u10fb\u10f8\u0001"+
54761 		"\u0000\u0000\u0000\u10fb\u10f9\u0001\u0000\u0000\u0000\u10fb\u10fa\u0001"+
54762 		"\u0000\u0000\u0000\u10fc\u0259\u0001\u0000\u0000\u0000\u10fd\u10fe\u0005"+
54763 		"9\u0000\u0000\u10fe\u10ff\u0005\u01e9\u0000\u0000\u10ff\u1104\u0003\u00ca"+
54764 		"e\u0000\u1100\u1101\u0005\u01e7\u0000\u0000\u1101\u1105\u0005\u0103\u0000"+
54765 		"\u0000\u1102\u1103\u0005\u01e7\u0000\u0000\u1103\u1105\u0005\u01e8\u0000"+
54766 		"\u0000\u1104\u1100\u0001\u0000\u0000\u0000\u1104\u1102\u0001\u0000\u0000"+
54767 		"\u0000\u1104\u1105\u0001\u0000\u0000\u0000\u1105\u1114\u0001\u0000\u0000"+
54768 		"\u0000\u1106\u1107\u0005\u021a\u0000\u0000\u1107\u1108\u0005\u01e9\u0000"+
54769 		"\u0000\u1108\u1114\u0003\u00cae\u0000\u1109\u110a\u0005\u021f\u0000\u0000"+
54770 		"\u110a\u110b\u0005\u01e9\u0000\u0000\u110b\u110c\u0003\u00cae\u0000\u110c"+
54771 		"\u110d\u0003\u025c\u012e\u0000\u110d\u1114\u0001\u0000\u0000\u0000\u110e"+
54772 		"\u1114\u0005\u0098\u0000\u0000\u110f\u1110\u0005\u00a8\u0000\u0000\u1110"+
54773 		"\u1111\u0005\u0018\u0000\u0000\u1111\u1114\u0003\u00cae\u0000\u1112\u1114"+
54774 		"\u0007=\u0000\u0000\u1113\u10fd\u0001\u0000\u0000\u0000\u1113\u1106\u0001"+
54775 		"\u0000\u0000\u0000\u1113\u1109\u0001\u0000\u0000\u0000\u1113\u110e\u0001"+
54776 		"\u0000\u0000\u0000\u1113\u110f\u0001\u0000\u0000\u0000\u1113\u1112\u0001"+
54777 		"\u0000\u0000\u0000\u1114\u025b\u0001\u0000\u0000\u0000\u1115\u1118\u0007"+
54778 		">\u0000\u0000\u1116\u1118\u00079\u0000\u0000\u1117\u1115\u0001\u0000\u0000"+
54779 		"\u0000\u1117";
54780 	private static final String _serializedATNSegment2 =
54781 		"\u1116\u0001\u0000\u0000\u0000\u1118\u025d\u0001\u0000\u0000\u0000\u1119"+
54782 		"\u111a\u00059\u0000\u0000\u111a\u111b\u0005\u015f\u0000\u0000\u111b\u1120"+
54783 		"\u0003\u01e6\u00f3\u0000\u111c\u111d\u0005%\u0000\u0000\u111d\u111f\u0003"+
54784 		"\u01e6\u00f3\u0000\u111e\u111c\u0001\u0000\u0000\u0000\u111f\u1122\u0001"+
54785 		"\u0000\u0000\u0000\u1120\u111e\u0001\u0000\u0000\u0000\u1120\u1121\u0001"+
54786 		"\u0000\u0000\u0000\u1121\u1126\u0001\u0000\u0000\u0000\u1122\u1120\u0001"+
54787 		"\u0000\u0000\u0000\u1123\u1124\u0005e\u0000\u0000\u1124\u1125\u0005\u01e9"+
54788 		"\u0000\u0000\u1125\u1127\u0003\u00cae\u0000\u1126\u1123\u0001\u0000\u0000"+
54789 		"\u0000\u1126\u1127\u0001\u0000\u0000\u0000\u1127\u113a\u0001\u0000\u0000"+
54790 		"\u0000\u1128\u1129\u00059\u0000\u0000\u1129\u112a\u0005\u0173\u0000\u0000"+
54791 		"\u112a\u112b\u0005\u015f\u0000\u0000\u112b\u1130\u0003\u01e6\u00f3\u0000"+
54792 		"\u112c\u112d\u0005%\u0000\u0000\u112d\u112f\u0003\u01e6\u00f3\u0000\u112e"+
54793 		"\u112c\u0001\u0000\u0000\u0000\u112f\u1132\u0001\u0000\u0000\u0000\u1130"+
54794 		"\u112e\u0001\u0000\u0000\u0000\u1130\u1131\u0001\u0000\u0000\u0000\u1131"+
54795 		"\u113a\u0001\u0000\u0000\u0000\u1132\u1130\u0001\u0000\u0000\u0000\u1133"+
54796 		"\u1134\u0005\u021a\u0000\u0000\u1134\u1135\u0005\u015f\u0000\u0000\u1135"+
54797 		"\u113a\u0005\u02ae\u0000\u0000\u1136\u1137\u0005\u021f\u0000\u0000\u1137"+
54798 		"\u1138\u0005\u015f\u0000\u0000\u1138\u113a\u0003\u01e6\u00f3\u0000\u1139"+
54799 		"\u1119\u0001\u0000\u0000\u0000\u1139\u1128\u0001\u0000\u0000\u0000\u1139"+
54800 		"\u1133\u0001\u0000\u0000\u0000\u1139\u1136\u0001\u0000\u0000\u0000\u113a"+
54801 		"\u025f\u0001\u0000\u0000\u0000\u113b\u113c\u0005\u0220\u0000\u0000\u113c"+
54802 		"\u113d\u0005\u0018\u0000\u0000\u113d\u1144\u0007\u0000\u0000\u0000\u113e"+
54803 		"\u113f\u0005\u001f\u0000\u0000\u113f\u1140\u0005\u0221\u0000\u0000\u1140"+
54804 		"\u1141\u0005\u0018\u0000\u0000\u1141\u1142\u0003\u00cae\u0000\u1142\u1143"+
54805 		"\u0005 \u0000\u0000\u1143\u1145\u0001\u0000\u0000\u0000\u1144\u113e\u0001"+
54806 		"\u0000\u0000\u0000\u1144\u1145\u0001\u0000\u0000\u0000\u1145\u0261\u0001"+
54807 		"\u0000\u0000\u0000\u1146\u1147\u0005\u025c\u0000\u0000\u1147\u115b\u0007"+
54808 		"\u0000\u0000\u0000\u1148\u1152\u0005\u025a\u0000\u0000\u1149\u1153\u0005"+
54809 		"\u0115\u0000\u0000\u114a\u1150\u0005`\u0000\u0000\u114b\u114c\u0005\u001f"+
54810 		"\u0000\u0000\u114c\u114d\u0005\u025b\u0000\u0000\u114d\u114e\u0005\u0018"+
54811 		"\u0000\u0000\u114e\u114f\u0007\u0000\u0000\u0000\u114f\u1151\u0005 \u0000"+
54812 		"\u0000\u1150\u114b\u0001\u0000\u0000\u0000\u1150\u1151\u0001\u0000\u0000"+
54813 		"\u0000\u1151\u1153\u0001\u0000\u0000\u0000\u1152\u1149\u0001\u0000\u0000"+
54814 		"\u0000\u1152\u114a\u0001\u0000\u0000\u0000\u1153\u115b\u0001\u0000\u0000"+
54815 		"\u0000\u1154\u1155\u0005\u0259\u0000\u0000\u1155\u115b\u0007\u0000\u0000"+
54816 		"\u0000\u1156\u1157\u0005\u0258\u0000\u0000\u1157\u115b\u0007\u0000\u0000"+
54817 		"\u0000\u1158\u1159\u0005\u0257\u0000\u0000\u1159\u115b\u0007\u0000\u0000"+
54818 		"\u0000\u115a\u1146\u0001\u0000\u0000\u0000\u115a\u1148\u0001\u0000\u0000"+
54819 		"\u0000\u115a\u1154\u0001\u0000\u0000\u0000\u115a\u1156\u0001\u0000\u0000"+
54820 		"\u0000\u115a\u1158\u0001\u0000\u0000\u0000\u115b\u0263\u0001\u0000\u0000"+
54821 		"\u0000\u115c\u115d\u0005\u0255\u0000\u0000\u115d\u115e\u0005\u001f\u0000"+
54822 		"\u0000\u115e\u115f\u0005\u0256\u0000\u0000\u115f\u1160\u0005\u0018\u0000"+
54823 		"\u0000\u1160\u1161\u0007\u0000\u0000\u0000\u1161\u1162\u0005 \u0000\u0000"+
54824 		"\u1162\u0265\u0001\u0000\u0000\u0000\u1163\u1177\u0005\u0254\u0000\u0000"+
54825 		"\u1164\u1165\u0005\u0018\u0000\u0000\u1165\u1178\u0005\u0115\u0000\u0000"+
54826 		"\u1166\u1167\u0005\u0018\u0000\u0000\u1167\u1169\u0005`\u0000\u0000\u1168"+
54827 		"\u1166\u0001\u0000\u0000\u0000\u1168\u1169\u0001\u0000\u0000\u0000\u1169"+
54828 		"\u1175\u0001\u0000\u0000\u0000\u116a\u116b\u0005\u001f\u0000\u0000\u116b"+
54829 		"\u1170\u0003\u0268\u0134\u0000\u116c\u116d\u0005%\u0000\u0000\u116d\u116f"+
54830 		"\u0003\u0268\u0134\u0000\u116e\u116c\u0001\u0000\u0000\u0000\u116f\u1172"+
54831 		"\u0001\u0000\u0000\u0000\u1170\u116e\u0001\u0000\u0000\u0000\u1170\u1171"+
54832 		"\u0001\u0000\u0000\u0000\u1171\u1173\u0001\u0000\u0000\u0000\u1172\u1170"+
54833 		"\u0001\u0000\u0000\u0000\u1173\u1174\u0005 \u0000\u0000\u1174\u1176\u0001"+
54834 		"\u0000\u0000\u0000\u1175\u116a\u0001\u0000\u0000\u0000\u1175\u1176\u0001"+
54835 		"\u0000\u0000\u0000\u1176\u1178\u0001\u0000\u0000\u0000\u1177\u1164\u0001"+
54836 		"\u0000\u0000\u0000\u1177\u1168\u0001\u0000\u0000\u0000\u1178\u0267\u0001"+
54837 		"\u0000\u0000\u0000\u1179\u117a\u0005\u0253\u0000\u0000\u117a\u117b\u0005"+
54838 		"\u0018\u0000\u0000\u117b\u1181\u0007\u0000\u0000\u0000\u117c\u117d\u0005"+
54839 		"\u0252\u0000\u0000\u117d\u117e\u0005\u0018\u0000\u0000\u117e\u117f\u0005"+
54840 		"\u02af\u0000\u0000\u117f\u1181\u0007?\u0000\u0000\u1180\u1179\u0001\u0000"+
54841 		"\u0000\u0000\u1180\u117c\u0001\u0000\u0000\u0000\u1181\u0269\u0001\u0000"+
54842 		"\u0000\u0000\u1182\u1183\u0005\u0250\u0000\u0000\u1183\u1187\u0007\u0000"+
54843 		"\u0000\u0000\u1184\u1185\u0005\u024e\u0000\u0000\u1185\u1187\u0007@\u0000"+
54844 		"\u0000\u1186\u1182\u0001\u0000\u0000\u0000\u1186\u1184\u0001\u0000\u0000"+
54845 		"\u0000\u1187\u026b\u0001\u0000\u0000\u0000\u1188\u1189\u0005\u01eb\u0000"+
54846 		"\u0000\u1189\u119c\u0007\u0000\u0000\u0000\u118a\u118b\u0005\u01ec\u0000"+
54847 		"\u0000\u118b\u119c\u0007\u0000\u0000\u0000\u118c\u118d\u0005\u0276\u0000"+
54848 		"\u0000\u118d\u118e\u0005\u0018\u0000\u0000\u118e\u119c\u0005\u02ae\u0000"+
54849 		"\u0000\u118f\u1190\u0005\u0277\u0000\u0000\u1190\u1191\u0005\u0018\u0000"+
54850 		"\u0000\u1191\u119c\u0005\u02ae\u0000\u0000\u1192\u1193\u0005\u0279\u0000"+
54851 		"\u0000\u1193\u1194\u0005\u0018\u0000\u0000\u1194\u119c\u0007\u0000\u0000"+
54852 		"\u0000\u1195\u1196\u0005\u027a\u0000\u0000\u1196\u1197\u0005\u0018\u0000"+
54853 		"\u0000\u1197\u119c\u0007\u0000\u0000\u0000\u1198\u1199\u0005\u027b\u0000"+
54854 		"\u0000\u1199\u119a\u0005\u0018\u0000\u0000\u119a\u119c\u0005\u02af\u0000"+
54855 		"\u0000\u119b\u1188\u0001\u0000\u0000\u0000\u119b\u118a\u0001\u0000\u0000"+
54856 		"\u0000\u119b\u118c\u0001\u0000\u0000\u0000\u119b\u118f\u0001\u0000\u0000"+
54857 		"\u0000\u119b\u1192\u0001\u0000\u0000\u0000\u119b\u1195\u0001\u0000\u0000"+
54858 		"\u0000\u119b\u1198\u0001\u0000\u0000\u0000\u119c\u026d\u0001\u0000\u0000"+
54859 		"\u0000\u119d\u11b1\u0005\u024d\u0000\u0000\u119e\u119f\u0005\u0018\u0000"+
54860 		"\u0000\u119f\u11b2\u0005\u0115\u0000\u0000\u11a0\u11a1\u0005\u0018\u0000"+
54861 		"\u0000\u11a1\u11a3\u0005`\u0000\u0000\u11a2\u11a0\u0001\u0000\u0000\u0000"+
54862 		"\u11a2\u11a3\u0001\u0000\u0000\u0000\u11a3\u11af\u0001\u0000\u0000\u0000"+
54863 		"\u11a4\u11a5\u0005\u001f\u0000\u0000\u11a5\u11aa\u0003\u0270\u0138\u0000"+
54864 		"\u11a6\u11a7\u0005%\u0000\u0000\u11a7\u11a9\u0003\u0270\u0138\u0000\u11a8"+
54865 		"\u11a6\u0001\u0000\u0000\u0000\u11a9\u11ac\u0001\u0000\u0000\u0000\u11aa"+
54866 		"\u11a8\u0001\u0000\u0000\u0000\u11aa\u11ab\u0001\u0000\u0000\u0000\u11ab"+
54867 		"\u11ad\u0001\u0000\u0000\u0000\u11ac\u11aa\u0001\u0000\u0000\u0000\u11ad"+
54868 		"\u11ae\u0005 \u0000\u0000\u11ae\u11b0\u0001\u0000\u0000\u0000\u11af\u11a4"+
54869 		"\u0001\u0000\u0000\u0000\u11af\u11b0\u0001\u0000\u0000\u0000\u11b0\u11b2"+
54870 		"\u0001\u0000\u0000\u0000\u11b1\u119e\u0001\u0000\u0000\u0000\u11b1\u11a2"+
54871 		"\u0001\u0000\u0000\u0000\u11b2\u026f\u0001\u0000\u0000\u0000\u11b3\u11b4"+
54872 		"\u0005\u024c\u0000\u0000\u11b4\u11b5\u0005\u0018\u0000\u0000\u11b5\u11e0"+
54873 		"\u00079\u0000\u0000\u11b6\u11b7\u0005\u0249\u0000\u0000\u11b7\u11b8\u0005"+
54874 		"\u0018\u0000\u0000\u11b8\u11b9\u0005\u001f\u0000\u0000\u11b9\u11ba\u0005"+
54875 		"\u024b\u0000\u0000\u11ba\u11bb\u0005\u0018\u0000\u0000\u11bb\u11bc\u0005"+
54876 		"\u02af\u0000\u0000\u11bc\u11e0\u0005 \u0000\u0000\u11bd\u11be\u0005\u0248"+
54877 		"\u0000\u0000\u11be\u11bf\u0005\u0018\u0000\u0000\u11bf\u11e0\u0005\u02af"+
54878 		"\u0000\u0000\u11c0\u11c1\u0005\u0247\u0000\u0000\u11c1\u11c2\u0005\u0018"+
54879 		"\u0000\u0000\u11c2\u11e0\u0005\u02af\u0000\u0000\u11c3\u11c4\u0005\u0246"+
54880 		"\u0000\u0000\u11c4\u11c5\u0005\u0018\u0000\u0000\u11c5\u11e0\u0005\u02af"+
54881 		"\u0000\u0000\u11c6\u11c7\u0005\u0245\u0000\u0000\u11c7\u11c8\u0005\u0018"+
54882 		"\u0000\u0000\u11c8\u11e0\u0007A\u0000\u0000\u11c9\u11ca\u0005\u0244\u0000"+
54883 		"\u0000\u11ca\u11cb\u0005\u0018\u0000\u0000\u11cb\u11e0\u0007B\u0000\u0000"+
54884 		"\u11cc\u11cd\u0005\u0243\u0000\u0000\u11cd\u11ce\u0005\u0018\u0000\u0000"+
54885 		"\u11ce\u11e0\u0005\u02af\u0000\u0000\u11cf\u11d0\u0005\u0242\u0000\u0000"+
54886 		"\u11d0\u11d1\u0005\u0018\u0000\u0000\u11d1\u11e0\u0007\u0000\u0000\u0000"+
54887 		"\u11d2\u11d3\u0005\u0241\u0000\u0000\u11d3\u11d4\u0005\u0018\u0000\u0000"+
54888 		"\u11d4\u11d5\u0005\u001f\u0000\u0000\u11d5\u11da\u0003\u0272\u0139\u0000"+
54889 		"\u11d6\u11d7\u0005%\u0000\u0000\u11d7\u11d9\u0003\u0272\u0139\u0000\u11d8"+
54890 		"\u11d6\u0001\u0000\u0000\u0000\u11d9\u11dc\u0001\u0000\u0000\u0000\u11da"+
54891 		"\u11d8\u0001\u0000\u0000\u0000\u11da\u11db\u0001\u0000\u0000\u0000\u11db"+
54892 		"\u11dd\u0001\u0000\u0000\u0000\u11dc\u11da\u0001\u0000\u0000\u0000\u11dd"+
54893 		"\u11de\u0005 \u0000\u0000\u11de\u11e0\u0001\u0000\u0000\u0000\u11df\u11b3"+
54894 		"\u0001\u0000\u0000\u0000\u11df\u11b6\u0001\u0000\u0000\u0000\u11df\u11bd"+
54895 		"\u0001\u0000\u0000\u0000\u11df\u11c0\u0001\u0000\u0000\u0000\u11df\u11c3"+
54896 		"\u0001\u0000\u0000\u0000\u11df\u11c6\u0001\u0000\u0000\u0000\u11df\u11c9"+
54897 		"\u0001\u0000\u0000\u0000\u11df\u11cc\u0001\u0000\u0000\u0000\u11df\u11cf"+
54898 		"\u0001\u0000\u0000\u0000\u11df\u11d2\u0001\u0000\u0000\u0000\u11e0\u0271"+
54899 		"\u0001\u0000\u0000\u0000\u11e1\u11e2\u0005\u023f\u0000\u0000\u11e2\u11e3"+
54900 		"\u0005\u0018\u0000\u0000\u11e3\u11e4\u0005\u02af\u0000\u0000\u11e4\u11ef"+
54901 		"\u0007C\u0000\u0000\u11e5\u11e6\u0005\u0240\u0000\u0000\u11e6\u11e7\u0005"+
54902 		"\u0018\u0000\u0000\u11e7\u11ef\u0005\u02af\u0000\u0000\u11e8\u11e9\u0005"+
54903 		"\u023e\u0000\u0000\u11e9\u11ea\u0005\u0018\u0000\u0000\u11ea\u11ef\u0005"+
54904 		"\u02af\u0000\u0000\u11eb\u11ec\u0005\u023d\u0000\u0000\u11ec\u11ed\u0005"+
54905 		"\u0018\u0000\u0000\u11ed\u11ef\u0005\u02af\u0000\u0000\u11ee\u11e1\u0001"+
54906 		"\u0000\u0000\u0000\u11ee\u11e5\u0001\u0000\u0000\u0000\u11ee\u11e8\u0001"+
54907 		"\u0000\u0000\u0000\u11ee\u11eb\u0001\u0000\u0000\u0000\u11ef\u0273\u0001"+
54908 		"\u0000\u0000\u0000\u11f0\u11f1\u0005\u023c\u0000\u0000\u11f1\u11f7\u0007"+
54909 		"D\u0000\u0000\u11f2\u11f3\u0005\u023a\u0000\u0000\u11f3\u11f7\u0007\u0000"+
54910 		"\u0000\u0000\u11f4\u11f5\u0005\u0238\u0000\u0000\u11f5\u11f7\u0007E\u0000"+
54911 		"\u0000\u11f6\u11f0\u0001\u0000\u0000\u0000\u11f6\u11f2\u0001\u0000\u0000"+
54912 		"\u0000\u11f6\u11f4\u0001\u0000\u0000\u0000\u11f7\u0275\u0001\u0000\u0000"+
54913 		"\u0000\u11f8\u11f9\u0005\u0237\u0000\u0000\u11f9\u120e\u0007\u0000\u0000"+
54914 		"\u0000\u11fa\u11fb\u0005\u0236\u0000\u0000\u11fb\u120e\u0007\u0000\u0000"+
54915 		"\u0000\u11fc\u11fd\u0005\u0235\u0000\u0000\u11fd\u120e\u0007\u0000\u0000"+
54916 		"\u0000\u11fe\u11ff\u0005\u0234\u0000\u0000\u11ff\u120e\u0007\u0000\u0000"+
54917 		"\u0000\u1200\u1201\u0005\u0233\u0000\u0000\u1201\u120e\u0007\u0000\u0000"+
54918 		"\u0000\u1202\u1203\u0005\u0232\u0000\u0000\u1203\u1204\u0005\u0018\u0000"+
54919 		"\u0000\u1204\u120e\u0005\u02af\u0000\u0000\u1205\u1206\u0005\u0231\u0000"+
54920 		"\u0000\u1206\u120e\u0007\u0000\u0000\u0000\u1207\u1208\u0005\u0230\u0000"+
54921 		"\u0000\u1208\u120e\u0007\u0000\u0000\u0000\u1209\u120a\u0005\u022f\u0000"+
54922 		"\u0000\u120a\u120e\u0007\u0000\u0000\u0000\u120b\u120c\u0005\u022e\u0000"+
54923 		"\u0000\u120c\u120e\u0007\u0000\u0000\u0000\u120d\u11f8\u0001\u0000\u0000"+
54924 		"\u0000\u120d\u11fa\u0001\u0000\u0000\u0000\u120d\u11fc\u0001\u0000\u0000"+
54925 		"\u0000\u120d\u11fe\u0001\u0000\u0000\u0000\u120d\u1200\u0001\u0000\u0000"+
54926 		"\u0000\u120d\u1202\u0001\u0000\u0000\u0000\u120d\u1205\u0001\u0000\u0000"+
54927 		"\u0000\u120d\u1207\u0001\u0000\u0000\u0000\u120d\u1209\u0001\u0000\u0000"+
54928 		"\u0000\u120d\u120b\u0001\u0000\u0000\u0000\u120e\u0277\u0001\u0000\u0000"+
54929 		"\u0000\u120f\u1210\u0005\u022d\u0000\u0000\u1210\u1217\u0007\u0000\u0000"+
54930 		"\u0000\u1211\u1212\u0005\u022c\u0000\u0000\u1212\u1217\u0007\u0000\u0000"+
54931 		"\u0000\u1213\u1214\u0005\u022b\u0000\u0000\u1214\u1215\u0005\u0018\u0000"+
54932 		"\u0000\u1215\u1217\u0007\u0000\u0000\u0000\u1216\u120f\u0001\u0000\u0000"+
54933 		"\u0000\u1216\u1211\u0001\u0000\u0000\u0000\u1216\u1213\u0001\u0000\u0000"+
54934 		"\u0000\u1217\u0279\u0001\u0000\u0000\u0000\u1218\u121f\u0005\u022a\u0000"+
54935 		"\u0000\u1219\u121f\u0005\u0229\u0000\u0000\u121a\u121f\u0005\u0228\u0000"+
54936 		"\u0000\u121b\u121f\u0005\u0227\u0000\u0000\u121c\u121d\u0005\u0226\u0000"+
54937 		"\u0000\u121d\u121f\u0007\u0000\u0000\u0000\u121e\u1218\u0001\u0000\u0000"+
54938 		"\u0000\u121e\u1219\u0001\u0000\u0000\u0000\u121e\u121a\u0001\u0000\u0000"+
54939 		"\u0000\u121e\u121b\u0001\u0000\u0000\u0000\u121e\u121c\u0001\u0000\u0000"+
54940 		"\u0000\u121f\u027b\u0001\u0000\u0000\u0000\u1220\u1221\u0005\u0224\u0000"+
54941 		"\u0000\u1221\u1222\u0005\u0018\u0000\u0000\u1222\u1223\u0005\u02af\u0000"+
54942 		"\u0000\u1223\u1224\u0007F\u0000\u0000\u1224\u027d\u0001\u0000\u0000\u0000"+
54943 		"\u1225\u1226\u0005}\u0000\u0000\u1226\u1227\u0005\u0207\u0000\u0000\u1227"+
54944 		"\u1229\u0005\u02af\u0000\u0000\u1228\u122a\u0005\u0225\u0000\u0000\u1229"+
54945 		"\u1228\u0001\u0000\u0000\u0000\u1229\u122a\u0001\u0000\u0000\u0000\u122a"+
54946 		"\u122f\u0001\u0000\u0000\u0000\u122b\u122c\u0005}\u0000\u0000\u122c\u122f"+
54947 		"\u0005\u0222\u0000\u0000\u122d\u122f\u0005\u0223\u0000\u0000\u122e\u1225"+
54948 		"\u0001\u0000\u0000\u0000\u122e\u122b\u0001\u0000\u0000\u0000\u122e\u122d"+
54949 		"\u0001\u0000\u0000\u0000\u122f\u027f\u0001\u0000\u0000\u0000\u1230\u1231"+
54950 		"\u0005\u001f\u0000\u0000\u1231\u1236\u0003D\"\u0000\u1232\u1233\u0005"+
54951 		"%\u0000\u0000\u1233\u1235\u0003D\"\u0000\u1234\u1232\u0001\u0000\u0000"+
54952 		"\u0000\u1235\u1238\u0001\u0000\u0000\u0000\u1236\u1234\u0001\u0000\u0000"+
54953 		"\u0000\u1236\u1237\u0001\u0000\u0000\u0000\u1237\u1239\u0001\u0000\u0000"+
54954 		"\u0000\u1238\u1236\u0001\u0000\u0000\u0000\u1239\u123a\u0005 \u0000\u0000"+
54955 		"\u123a\u0281\u0001\u0000\u0000\u0000\u123b\u123c\u0005\u001f\u0000\u0000"+
54956 		"\u123c\u1241\u0003\u0284\u0142\u0000\u123d\u123e\u0005%\u0000\u0000\u123e"+
54957 		"\u1240\u0003\u0284\u0142\u0000\u123f\u123d\u0001\u0000\u0000\u0000\u1240"+
54958 		"\u1243\u0001\u0000\u0000\u0000\u1241\u123f\u0001\u0000\u0000\u0000\u1241"+
54959 		"\u1242\u0001\u0000\u0000\u0000\u1242\u1244\u0001\u0000\u0000\u0000\u1243"+
54960 		"\u1241\u0001\u0000\u0000\u0000\u1244\u1245\u0005 \u0000\u0000\u1245\u0283"+
54961 		"\u0001\u0000\u0000\u0000\u1246\u1247\u00059\u0000\u0000\u1247\u1248\u0005"+
54962 		"\u015a\u0000\u0000\u1248\u124d\u0003D\"\u0000\u1249\u124a\u00054\u0000"+
54963 		"\u0000\u124a\u124b\u0005\u015a\u0000\u0000\u124b\u124d\u0003D\"\u0000"+
54964 		"\u124c\u1246\u0001\u0000\u0000\u0000\u124c\u1249\u0001\u0000\u0000\u0000"+
54965 		"\u124d\u0285\u0001\u0000\u0000\u0000\u124e\u1256\u00034\u001a\u0000\u124f"+
54966 		"\u1250\u0005\u0280\u0000\u0000\u1250\u1256\u0003\u00cae\u0000\u1251\u1252"+
54967 		"\u00034\u001a\u0000\u1252\u1253\u0005\u0280\u0000\u0000\u1253\u1254\u0003"+
54968 		"\u00cae\u0000\u1254\u1256\u0001\u0000\u0000\u0000\u1255\u124e\u0001\u0000"+
54969 		"\u0000\u0000\u1255\u124f\u0001\u0000\u0000\u0000\u1255\u1251\u0001\u0000"+
54970 		"\u0000\u0000\u1256\u0287\u0001\u0000\u0000\u0000\u1257\u125d\u0003\u00e6"+
54971 		"s\u0000\u1258\u125d\u0003\u00f2y\u0000\u1259\u125d\u0003\u02fe\u017f\u0000"+
54972 		"\u125a\u125d\u0003\u0310\u0188\u0000\u125b\u125d\u0003\u0316\u018b\u0000"+
54973 		"\u125c\u1257\u0001\u0000\u0000\u0000\u125c\u1258\u0001\u0000\u0000\u0000"+
54974 		"\u125c\u1259\u0001\u0000\u0000\u0000\u125c\u125a\u0001\u0000\u0000\u0000"+
54975 		"\u125c\u125b\u0001\u0000\u0000\u0000\u125d\u0289\u0001\u0000\u0000\u0000"+
54976 		"\u125e\u1261\u0003\u028c\u0146\u0000\u125f\u1261\u0003\u028e\u0147\u0000"+
54977 		"\u1260\u125e\u0001\u0000\u0000\u0000\u1260\u125f\u0001\u0000\u0000\u0000"+
54978 		"\u1261\u028b\u0001\u0000\u0000\u0000\u1262\u1263\u00052\u0000\u0000\u1263"+
54979 		"\u1264\u0005;\u0000\u0000\u1264\u1266\u0003@ \u0000\u1265\u1267\u0003"+
54980 		"P(\u0000\u1266\u1265\u0001\u0000\u0000\u0000\u1266\u1267\u0001\u0000\u0000"+
54981 		"\u0000\u1267\u1268\u0001\u0000\u0000\u0000\u1268\u1269\u0003\u0290\u0148"+
54982 		"\u0000\u1269\u126a\u0005_\u0000\u0000\u126a\u126b\u0003\u02ae\u0157\u0000"+
54983 		"\u126b\u126c\u0003\u0292\u0149\u0000\u126c\u028d\u0001\u0000\u0000\u0000"+
54984 		"\u126d\u126e\u00052\u0000\u0000\u126e\u126f\u0005\u0166\u0000\u0000\u126f"+
54985 		"\u1270\u0005;\u0000\u0000\u1270\u1271\u0003@ \u0000\u1271\u1272\u0005"+
54986 		"\u00d2\u0000\u0000\u1272\u1273\u0005\u001f\u0000\u0000\u1273\u1274\u0003"+
54987 		"\u001c\u000e\u0000\u1274\u127b\u0005 \u0000\u0000\u1275\u1276\u0005L\u0000"+
54988 		"\u0000\u1276\u1277\u0005\u001f\u0000\u0000\u1277\u1278\u0005\u0284\u0000"+
54989 		"\u0000\u1278\u1279\u0005\u0018\u0000\u0000\u1279\u127a\u0005\u02b0\u0000"+
54990 		"\u0000\u127a\u127c\u0005 \u0000\u0000\u127b\u1275\u0001\u0000\u0000\u0000"+
54991 		"\u127b\u127c\u0001\u0000\u0000\u0000\u127c\u127d\u0001\u0000\u0000\u0000"+
54992 		"\u127d\u127e\u0005_\u0000\u0000\u127e\u127f\u0003\u02ae\u0157\u0000\u127f"+
54993 		"\u028f\u0001\u0000\u0000\u0000\u1280\u1281\u0005L\u0000\u0000\u1281\u1282"+
54994 		"\u0005\u001f\u0000\u0000\u1282\u128c\u0003\u0190\u00c8\u0000\u1283\u1284"+
54995 		"\u0005%\u0000\u0000\u1284\u1289\u0003\u0184\u00c2\u0000\u1285\u1286\u0005"+
54996 		"%\u0000\u0000\u1286\u1288\u0003\u0184\u00c2\u0000\u1287\u1285\u0001\u0000"+
54997 		"\u0000\u0000\u1288\u128b\u0001\u0000\u0000\u0000\u1289\u1287\u0001\u0000"+
54998 		"\u0000\u0000\u1289\u128a\u0001\u0000\u0000\u0000\u128a\u128d\u0001\u0000"+
54999 		"\u0000\u0000\u128b\u1289\u0001\u0000\u0000\u0000\u128c\u1283\u0001\u0000"+
55000 		"\u0000\u0000\u128c\u128d\u0001\u0000\u0000\u0000\u128d\u128e\u0001\u0000"+
55001 		"\u0000\u0000\u128e\u128f\u0005 \u0000\u0000\u128f\u0291\u0001\u0000\u0000"+
55002 		"\u0000\u1290\u1291\u0005\u00e6\u0000\u0000\u1291\u1292\u0005\u001f\u0000"+
55003 		"\u0000\u1292\u1297\u0003\u02e6\u0173\u0000\u1293\u1294\u0005%\u0000\u0000"+
55004 		"\u1294\u1296\u0003\u02e6\u0173\u0000\u1295\u1293\u0001\u0000\u0000\u0000"+
55005 		"\u1296\u1299\u0001\u0000\u0000\u0000\u1297\u1295\u0001\u0000\u0000\u0000"+
55006 		"\u1297\u1298\u0001\u0000\u0000\u0000\u1298\u129a\u0001\u0000\u0000\u0000"+
55007 		"\u1299\u1297\u0001\u0000\u0000\u0000\u129a\u129b\u0005 \u0000\u0000\u129b"+
55008 		"\u129d\u0001\u0000\u0000\u0000\u129c\u1290\u0001\u0000\u0000\u0000\u129c"+
55009 		"\u129d\u0001\u0000\u0000\u0000\u129d\u0293\u0001\u0000\u0000\u0000\u129e"+
55010 		"\u12a0\u0003\u02d6\u016b\u0000\u129f\u129e\u0001\u0000\u0000\u0000\u129f"+
55011 		"\u12a0\u0001\u0000\u0000\u0000\u12a0\u12a1\u0001\u0000\u0000\u0000\u12a1"+
55012 		"\u12a3\u0005/\u0000\u0000\u12a2\u12a4\u0003\u02ba\u015d\u0000\u12a3\u12a2"+
55013 		"\u0001\u0000\u0000\u0000\u12a3\u12a4\u0001\u0000\u0000\u0000\u12a4\u12a6"+
55014 		"\u0001\u0000\u0000\u0000\u12a5\u12a7\u0005J\u0000\u0000\u12a6\u12a5\u0001"+
55015 		"\u0000\u0000\u0000\u12a6\u12a7\u0001\u0000\u0000\u0000\u12a7\u12a8\u0001"+
55016 		"\u0000\u0000\u0000\u12a8\u12ad\u0003@ \u0000\u12a9\u12ab\u0005_\u0000"+
55017 		"\u0000\u12aa\u12a9\u0001\u0000\u0000\u0000\u12aa\u12ab\u0001\u0000\u0000"+
55018 		"\u0000\u12ab\u12ac\u0001\u0000\u0000\u0000\u12ac\u12ae\u0003\\.\u0000"+
55019 		"\u12ad\u12aa\u0001\u0000\u0000\u0000\u12ad\u12ae\u0001\u0000\u0000\u0000"+
55020 		"\u12ae\u12b2\u0001\u0000\u0000\u0000\u12af\u12b3\u0003\u0296\u014b\u0000"+
55021 		"\u12b0\u12b3\u0003\u0298\u014c\u0000\u12b1\u12b3\u0003\u029a\u014d\u0000"+
55022 		"\u12b2\u12af\u0001\u0000\u0000\u0000\u12b2\u12b0\u0001\u0000\u0000\u0000"+
55023 		"\u12b2\u12b1\u0001\u0000\u0000\u0000\u12b3\u0295\u0001\u0000\u0000\u0000"+
55024 		"\u12b4\u12b6\u0003P(\u0000\u12b5\u12b4\u0001\u0000\u0000\u0000\u12b5\u12b6"+
55025 		"\u0001\u0000\u0000\u0000\u12b6\u12b8\u0001\u0000\u0000\u0000\u12b7\u12b9"+
55026 		"\u0003\u02dc\u016e\u0000\u12b8\u12b7\u0001\u0000\u0000\u0000\u12b8\u12b9"+
55027 		"\u0001\u0000\u0000\u0000\u12b9\u12ba\u0001\u0000\u0000\u0000\u12ba\u12bb"+
55028 		"\u0005\u0098\u0000\u0000\u12bb\u12bc\u0005K\u0000\u0000\u12bc\u0297\u0001"+
55029 		"\u0000\u0000\u0000\u12bd\u12bf\u0003P(\u0000\u12be\u12bd\u0001\u0000\u0000"+
55030 		"\u0000\u12be\u12bf\u0001\u0000\u0000\u0000\u12bf\u12c1\u0001\u0000\u0000"+
55031 		"\u0000\u12c0\u12c2\u0003\u02dc\u016e\u0000\u12c1\u12c0\u0001\u0000\u0000"+
55032 		"\u0000\u12c1\u12c2\u0001\u0000\u0000\u0000\u12c2\u12c3\u0001\u0000\u0000"+
55033 		"\u0000\u12c3\u12c4\u0005K\u0000\u0000\u12c4\u12c9\u0003\u02a2\u0151\u0000"+
55034 		"\u12c5\u12c6\u0005%\u0000\u0000\u12c6\u12c8\u0003\u02a2\u0151\u0000\u12c7"+
55035 		"\u12c5\u0001\u0000\u0000\u0000\u12c8\u12cb\u0001\u0000\u0000\u0000\u12c9"+
55036 		"\u12c7\u0001\u0000\u0000\u0000\u12c9\u12ca\u0001\u0000\u0000\u0000\u12ca"+
55037 		"\u0299\u0001\u0000\u0000\u0000\u12cb\u12c9\u0001\u0000\u0000\u0000\u12cc"+
55038 		"\u12ce\u0003P(\u0000\u12cd\u12cc\u0001\u0000\u0000\u0000\u12cd\u12ce\u0001"+
55039 		"\u0000\u0000\u0000\u12ce\u12d0\u0001\u0000\u0000\u0000\u12cf\u12d1\u0003"+
55040 		"\u02dc\u016e\u0000\u12d0\u12cf\u0001\u0000\u0000\u0000\u12d0\u12d1\u0001"+
55041 		"\u0000\u0000\u0000\u12d1\u12d2\u0001\u0000\u0000\u0000\u12d2\u12d3\u0003"+
55042 		"\u02ae\u0157\u0000\u12d3\u029b\u0001\u0000\u0000\u0000\u12d4\u12d6\u0003"+
55043 		"\u02d6\u016b\u0000\u12d5\u12d4\u0001\u0000\u0000\u0000\u12d5\u12d6\u0001"+
55044 		"\u0000\u0000\u0000\u12d6\u12d7\u0001\u0000\u0000\u0000\u12d7\u12d9\u0005"+
55045 		"0\u0000\u0000\u12d8\u12da\u0003\u02ba\u015d\u0000\u12d9\u12d8\u0001\u0000"+
55046 		"\u0000\u0000\u12d9\u12da\u0001\u0000\u0000\u0000\u12da\u12db\u0001\u0000"+
55047 		"\u0000\u0000\u12db\u12dc\u0003\u02c4\u0162\u0000\u12dc\u12de\u0003\u02a0"+
55048 		"\u0150\u0000\u12dd\u12df\u0003\u02ce\u0167\u0000\u12de\u12dd\u0001\u0000"+
55049 		"\u0000\u0000\u12de\u12df\u0001\u0000\u0000\u0000\u12df\u12e2\u0001\u0000"+
55050 		"\u0000\u0000\u12e0\u12e1\u0005\u00e6\u0000\u0000\u12e1\u12e3\u0003\u02e6"+
55051 		"\u0173\u0000\u12e2\u12e0\u0001\u0000\u0000\u0000\u12e2\u12e3\u0001\u0000"+
55052 		"\u0000\u0000\u12e3\u029d\u0001\u0000\u0000\u0000\u12e4\u12e5\u0003H$\u0000"+
55053 		"\u12e5\u12e6\u0005\u0018\u0000\u0000\u12e6\u12e7\u0003\u02a4\u0152\u0000"+
55054 		"\u12e7\u029f\u0001\u0000\u0000\u0000\u12e8\u12e9\u0005:\u0000\u0000\u12e9"+
55055 		"\u12ee\u0003\u029e\u014f\u0000\u12ea\u12eb\u0005%\u0000\u0000\u12eb\u12ed"+
55056 		"\u0003\u029e\u014f\u0000\u12ec\u12ea\u0001\u0000\u0000\u0000\u12ed\u12f0"+
55057 		"\u0001\u0000\u0000\u0000\u12ee\u12ec\u0001\u0000\u0000\u0000\u12ee\u12ef"+
55058 		"\u0001\u0000\u0000\u0000\u12ef\u12f2\u0001\u0000\u0000\u0000\u12f0\u12ee"+
55059 		"\u0001\u0000\u0000\u0000\u12f1\u12f3\u0003\u02c2\u0161\u0000\u12f2\u12f1"+
55060 		"\u0001\u0000\u0000\u0000\u12f2\u12f3\u0001\u0000\u0000\u0000\u12f3\u02a1"+
55061 		"\u0001\u0000\u0000\u0000\u12f4\u12f5\u0005\u001f\u0000\u0000\u12f5\u12fa"+
55062 		"\u0003\u02a4\u0152\u0000\u12f6\u12f7\u0005%\u0000\u0000\u12f7\u12f9\u0003"+
55063 		"\u02a4\u0152\u0000\u12f8\u12f6\u0001\u0000\u0000\u0000\u12f9\u12fc\u0001"+
55064 		"\u0000\u0000\u0000\u12fa\u12f8\u0001\u0000\u0000\u0000\u12fa\u12fb\u0001"+
55065 		"\u0000\u0000\u0000\u12fb\u12fd\u0001\u0000\u0000\u0000\u12fc\u12fa\u0001"+
55066 		"\u0000\u0000\u0000\u12fd\u12fe\u0005 \u0000\u0000\u12fe\u1302\u0001\u0000"+
55067 		"\u0000\u0000\u12ff\u1300\u0005\u001f\u0000\u0000\u1300\u1302\u0005 \u0000"+
55068 		"\u0000\u1301\u12f4\u0001\u0000\u0000\u0000\u1301\u12ff\u0001\u0000\u0000"+
55069 		"\u0000\u1302\u02a3\u0001\u0000\u0000\u0000\u1303\u1306\u0003b1\u0000\u1304"+
55070 		"\u1306\u0005\u0098\u0000\u0000\u1305\u1303\u0001\u0000\u0000\u0000\u1305"+
55071 		"\u1304\u0001\u0000\u0000\u0000\u1306\u02a5\u0001\u0000\u0000\u0000\u1307"+
55072 		"\u1309\u0003\u02d6\u016b\u0000\u1308\u1307\u0001\u0000\u0000\u0000\u1308"+
55073 		"\u1309\u0001\u0000\u0000\u0000\u1309\u130a\u0001\u0000\u0000\u0000\u130a"+
55074 		"\u130c\u00051\u0000\u0000\u130b\u130d\u0003\u02ba\u015d\u0000\u130c\u130b"+
55075 		"\u0001\u0000\u0000\u0000\u130c\u130d\u0001\u0000\u0000\u0000\u130d\u1310"+
55076 		"\u0001\u0000\u0000\u0000\u130e\u1311\u0003\u02a8\u0154\u0000\u130f\u1311"+
55077 		"\u0003\u02aa\u0155\u0000\u1310\u130e\u0001\u0000\u0000\u0000\u1310\u130f"+
55078 		"\u0001\u0000\u0000\u0000\u1311\u1313\u0001\u0000\u0000\u0000\u1312\u1314"+
55079 		"\u0003\u02dc\u016e\u0000\u1313\u1312\u0001\u0000\u0000\u0000\u1313\u1314"+
55080 		"\u0001\u0000\u0000\u0000\u1314\u1316\u0001\u0000\u0000\u0000\u1315\u1317"+
55081 		"\u0003\u02ce\u0167\u0000\u1316\u1315\u0001\u0000\u0000\u0000\u1316\u1317"+
55082 		"\u0001\u0000\u0000\u0000\u1317\u131a\u0001\u0000\u0000\u0000\u1318\u1319"+
55083 		"\u0005\u00e6\u0000\u0000\u1319\u131b\u0003\u02e6\u0173\u0000\u131a\u1318"+
55084 		"\u0001\u0000\u0000\u0000\u131a\u131b\u0001\u0000\u0000\u0000\u131b\u02a7"+
55085 		"\u0001\u0000\u0000\u0000\u131c\u131e\u0005T\u0000\u0000\u131d\u131c\u0001"+
55086 		"\u0000\u0000\u0000\u131d\u131e\u0001\u0000\u0000\u0000\u131e\u1320\u0001"+
55087 		"\u0000\u0000\u0000\u131f\u1321\u0005\u001f\u0000\u0000\u1320\u131f\u0001"+
55088 		"\u0000\u0000\u0000\u1320\u1321\u0001\u0000\u0000\u0000\u1321\u1322\u0001"+
55089 		"\u0000\u0000\u0000\u1322\u1324\u0003@ \u0000\u1323\u1325\u0005 \u0000"+
55090 		"\u0000\u1324\u1323\u0001\u0000\u0000\u0000\u1324\u1325\u0001\u0000\u0000"+
55091 		"\u0000\u1325\u132a\u0001\u0000\u0000\u0000\u1326\u1328\u0005_\u0000\u0000"+
55092 		"\u1327\u1326\u0001\u0000\u0000\u0000\u1327\u1328\u0001\u0000\u0000\u0000"+
55093 		"\u1328\u1329\u0001\u0000\u0000\u0000\u1329\u132b\u0003\\.\u0000\u132a"+
55094 		"\u1327\u0001\u0000\u0000\u0000\u132a\u132b\u0001\u0000\u0000\u0000\u132b"+
55095 		"\u02a9\u0001\u0000\u0000\u0000\u132c\u132d\u0003\u02ac\u0156\u0000\u132d"+
55096 		"\u132e\u0005T\u0000\u0000\u132e\u132f\u0003\u02c4\u0162\u0000\u132f\u1336"+
55097 		"\u0001\u0000\u0000\u0000\u1330\u1331\u0005T\u0000\u0000\u1331\u1332\u0003"+
55098 		"\u02ac\u0156\u0000\u1332\u1333\u0005]\u0000\u0000\u1333\u1334\u0003\u02c4"+
55099 		"\u0162\u0000\u1334\u1336\u0001\u0000\u0000\u0000\u1335\u132c\u0001\u0000"+
55100 		"\u0000\u0000\u1335\u1330\u0001\u0000\u0000\u0000\u1336\u02ab\u0001\u0000"+
55101 		"\u0000\u0000\u1337\u1339\u0003@ \u0000\u1338\u133a\u0005\u0015\u0000\u0000"+
55102 		"\u1339\u1338\u0001\u0000\u0000\u0000\u1339\u133a\u0001\u0000\u0000\u0000"+
55103 		"\u133a\u1342\u0001\u0000\u0000\u0000\u133b\u133c\u0005%\u0000\u0000\u133c"+
55104 		"\u133e\u0003@ \u0000\u133d\u133f\u0005\u0015\u0000\u0000\u133e\u133d\u0001"+
55105 		"\u0000\u0000\u0000\u133e\u133f\u0001\u0000\u0000\u0000\u133f\u1341\u0001"+
55106 		"\u0000\u0000\u0000\u1340\u133b\u0001\u0000\u0000\u0000\u1341\u1344\u0001"+
55107 		"\u0000\u0000\u0000\u1342\u1340\u0001\u0000\u0000\u0000\u1342\u1343\u0001"+
55108 		"\u0000\u0000\u0000\u1343\u02ad\u0001\u0000\u0000\u0000\u1344\u1342\u0001"+
55109 		"\u0000\u0000\u0000\u1345\u1346\u0003\u02b0\u0158\u0000\u1346\u02af\u0001"+
55110 		"\u0000\u0000\u0000\u1347\u1353\u0003\u02b2\u0159\u0000\u1348\u134a\u0005"+
55111 		"M\u0000\u0000\u1349\u134b\u0005p\u0000\u0000\u134a\u1349\u0001\u0000\u0000"+
55112 		"\u0000\u134a\u134b\u0001\u0000\u0000\u0000\u134b\u134f\u0001\u0000\u0000"+
55113 		"\u0000\u134c\u134f\u0005\u00ba\u0000\u0000\u134d\u134f\u0005\u00bb\u0000"+
55114 		"\u0000\u134e\u1348\u0001\u0000\u0000\u0000\u134e\u134c\u0001\u0000\u0000"+
55115 		"\u0000\u134e\u134d\u0001\u0000\u0000\u0000\u134f\u1350\u0001\u0000\u0000"+
55116 		"\u0000\u1350\u1352\u0003\u02b2\u0159\u0000\u1351\u134e\u0001\u0000\u0000"+
55117 		"\u0000\u1352\u1355\u0001\u0000\u0000\u0000\u1353\u1351\u0001\u0000\u0000"+
55118 		"\u0000\u1353\u1354\u0001\u0000\u0000\u0000\u1354\u02b1\u0001\u0000\u0000"+
55119 		"\u0000\u1355\u1353\u0001\u0000\u0000\u0000\u1356\u1358\u0003\u02f2\u0179"+
55120 		"\u0000\u1357\u1356\u0001\u0000\u0000\u0000\u1357\u1358\u0001\u0000\u0000"+
55121 		"\u0000\u1358\u1359\u0001\u0000\u0000\u0000\u1359\u135b\u0005.\u0000\u0000"+
55122 		"\u135a\u135c\u0003\u02b4\u015a\u0000\u135b\u135a\u0001\u0000\u0000\u0000"+
55123 		"\u135b\u135c\u0001\u0000\u0000\u0000\u135c\u135d\u0001\u0000\u0000\u0000"+
55124 		"\u135d\u135f\u0003\u02b6\u015b\u0000\u135e\u1360\u0003\u02c2\u0161\u0000"+
55125 		"\u135f\u135e\u0001\u0000\u0000\u0000\u135f\u1360\u0001\u0000\u0000\u0000"+
55126 		"\u1360\u1362\u0001\u0000\u0000\u0000\u1361\u1363\u0003\u02ce\u0167\u0000"+
55127 		"\u1362\u1361\u0001\u0000\u0000\u0000\u1362\u1363\u0001\u0000\u0000\u0000"+
55128 		"\u1363\u1365\u0001\u0000\u0000\u0000\u1364\u1366\u0003\u02d0\u0168\u0000"+
55129 		"\u1365\u1364\u0001\u0000\u0000\u0000\u1365\u1366\u0001\u0000\u0000\u0000"+
55130 		"\u1366\u1368\u0001\u0000\u0000\u0000\u1367\u1369\u0003\u02d2\u0169\u0000"+
55131 		"\u1368\u1367\u0001\u0000\u0000\u0000\u1368\u1369\u0001\u0000\u0000\u0000"+
55132 		"\u1369\u136b\u0001\u0000\u0000\u0000\u136a\u136c\u0003\u0090H\u0000\u136b"+
55133 		"\u136a\u0001\u0000\u0000\u0000\u136b\u136c\u0001\u0000\u0000\u0000\u136c"+
55134 		"\u136e\u0001\u0000\u0000\u0000\u136d\u136f\u0003\u02ea\u0175\u0000\u136e"+
55135 		"\u136d\u0001\u0000\u0000\u0000\u136e\u136f\u0001\u0000\u0000\u0000\u136f"+
55136 		"\u02b3\u0001\u0000\u0000\u0000\u1370\u1371\u0007G\u0000\u0000\u1371\u02b5"+
55137 		"\u0001\u0000\u0000\u0000\u1372\u1375\u0003\u02be\u015f\u0000\u1373\u1375"+
55138 		"\u0003\u02b8\u015c\u0000\u1374\u1372\u0001\u0000\u0000\u0000\u1374\u1373"+
55139 		"\u0001\u0000\u0000\u0000\u1375\u137a\u0001\u0000\u0000\u0000\u1376\u1377"+
55140 		"\u0005%\u0000\u0000\u1377\u1379\u0003\u02b8\u015c\u0000\u1378\u1376\u0001"+
55141 		"\u0000\u0000\u0000\u1379\u137c\u0001\u0000\u0000\u0000\u137a\u1378\u0001"+
55142 		"\u0000\u0000\u0000\u137a\u137b\u0001\u0000\u0000\u0000\u137b\u02b7\u0001"+
55143 		"\u0000\u0000\u0000\u137c\u137a\u0001\u0000\u0000\u0000\u137d\u1381\u0003"+
55144 		"\u02ba\u015d\u0000\u137e\u1381\u0003H$\u0000\u137f\u1381\u0003b1\u0000"+
55145 		"\u1380\u137d\u0001\u0000\u0000\u0000\u1380\u137e\u0001\u0000\u0000\u0000"+
55146 		"\u1380\u137f\u0001\u0000\u0000\u0000\u1381\u1386\u0001\u0000\u0000\u0000"+
55147 		"\u1382\u1384\u0005_\u0000\u0000\u1383\u1382\u0001\u0000\u0000\u0000\u1383"+
55148 		"\u1384\u0001\u0000\u0000\u0000\u1384\u1385\u0001\u0000\u0000\u0000\u1385"+
55149 		"\u1387\u0003\\.\u0000\u1386\u1383\u0001\u0000\u0000\u0000\u1386\u1387"+
55150 		"\u0001\u0000\u0000\u0000\u1387\u138a\u0001\u0000\u0000\u0000\u1388\u138a"+
55151 		"\u0003\u02c0\u0160\u0000\u1389\u1380\u0001\u0000\u0000\u0000\u1389\u1388"+
55152 		"\u0001\u0000\u0000\u0000\u138a\u02b9\u0001\u0000\u0000\u0000\u138b\u138d"+
55153 		"\u0005\u00dc\u0000\u0000\u138c\u138e\u0005\u001f\u0000\u0000\u138d\u138c"+
55154 		"\u0001\u0000\u0000\u0000\u138d\u138e\u0001\u0000\u0000\u0000\u138e\u138f"+
55155 		"\u0001\u0000\u0000\u0000\u138f\u1391\u0003\u02bc\u015e\u0000\u1390\u1392"+
55156 		"\u0005 \u0000\u0000\u1391\u1390\u0001\u0000\u0000\u0000\u1391\u1392\u0001"+
55157 		"\u0000\u0000\u0000\u1392\u1394\u0001\u0000\u0000\u0000\u1393\u1395\u0005"+
55158 		"\u00b8\u0000\u0000\u1394\u1393\u0001\u0000\u0000\u0000\u1394\u1395\u0001"+
55159 		"\u0000\u0000\u0000\u1395\u1398\u0001\u0000\u0000\u0000\u1396\u1397\u0005"+
55160 		"L\u0000\u0000\u1397\u1399\u0005\u00b9\u0000\u0000\u1398\u1396\u0001\u0000"+
55161 		"\u0000\u0000\u1398\u1399\u0001\u0000\u0000\u0000\u1399\u13a2\u0001\u0000"+
55162 		"\u0000\u0000\u139a\u139b\u0005\u01a3\u0000\u0000\u139b\u139c\u0005\u001f"+
55163 		"\u0000\u0000\u139c\u139d\u0005 \u0000\u0000\u139d\u139e\u0005\u0117\u0000"+
55164 		"\u0000\u139e\u139f\u0005\u001f\u0000\u0000\u139f\u13a0\u0003\u0090H\u0000"+
55165 		"\u13a0\u13a1\u0005 \u0000\u0000\u13a1\u13a3\u0001\u0000\u0000\u0000\u13a2"+
55166 		"\u139a\u0001\u0000\u0000\u0000\u13a2\u13a3\u0001\u0000\u0000\u0000\u13a3"+
55167 		"\u02bb\u0001\u0000\u0000\u0000\u13a4\u13a7\u0003\u001e\u000f\u0000\u13a5"+
55168 		"\u13a7\u0003\u0018\f\u0000\u13a6\u13a4\u0001\u0000\u0000\u0000\u13a6\u13a5"+
55169 		"\u0001\u0000\u0000\u0000\u13a7\u02bd\u0001\u0000\u0000\u0000\u13a8\u13a9"+
55170 		"\u0005\u0011\u0000\u0000\u13a9\u02bf\u0001\u0000\u0000\u0000\u13aa\u13ab"+
55171 		"\u0003*\u0015\u0000\u13ab\u13ac\u0005\u0015\u0000\u0000\u13ac\u02c1\u0001"+
55172 		"\u0000\u0000\u0000\u13ad\u13ae\u0005T\u0000\u0000\u13ae\u13af\u0003\u02c4"+
55173 		"\u0162\u0000\u13af\u02c3\u0001\u0000\u0000\u0000\u13b0\u13b5\u0003\u02c6"+
55174 		"\u0163\u0000\u13b1\u13b2\u0005%\u0000\u0000\u13b2\u13b4\u0003\u02c6\u0163"+
55175 		"\u0000\u13b3\u13b1\u0001\u0000\u0000\u0000\u13b4\u13b7\u0001\u0000\u0000"+
55176 		"\u0000\u13b5\u13b3\u0001\u0000\u0000\u0000\u13b5\u13b6\u0001\u0000\u0000"+
55177 		"\u0000\u13b6\u02c5\u0001\u0000\u0000\u0000\u13b7\u13b5\u0001\u0000\u0000"+
55178 		"\u0000\u13b8\u13bc\u0003\u02c8\u0164\u0000\u13b9\u13bb\u0003\u02ca\u0165"+
55179 		"\u0000\u13ba\u13b9\u0001\u0000\u0000\u0000\u13bb\u13be\u0001\u0000\u0000"+
55180 		"\u0000\u13bc\u13ba\u0001\u0000\u0000\u0000\u13bc\u13bd\u0001\u0000\u0000"+
55181 		"\u0000\u13bd\u02c7\u0001\u0000\u0000\u0000\u13be\u13bc\u0001\u0000\u0000"+
55182 		"\u0000\u13bf\u13c4\u0003@ \u0000\u13c0\u13c2\u0005_\u0000\u0000\u13c1"+
55183 		"\u13c0\u0001\u0000\u0000\u0000\u13c1\u13c2\u0001\u0000\u0000\u0000\u13c2"+
55184 		"\u13c3\u0001\u0000\u0000\u0000\u13c3\u13c5\u0003\\.\u0000\u13c4\u13c1"+
55185 		"\u0001\u0000\u0000\u0000\u13c4\u13c5\u0001\u0000\u0000\u0000\u13c5\u13d3"+
55186 		"\u0001\u0000\u0000\u0000\u13c6\u13c8\u0003\u02d4\u016a\u0000\u13c7\u13c9"+
55187 		"\u0005_\u0000\u0000\u13c8\u13c7\u0001\u0000\u0000\u0000\u13c8\u13c9\u0001"+
55188 		"\u0000\u0000\u0000\u13c9\u13ca\u0001\u0000\u0000\u0000\u13ca\u13cc\u0003"+
55189 		"\\.\u0000\u13cb\u13cd\u0003P(\u0000\u13cc\u13cb\u0001\u0000\u0000\u0000"+
55190 		"\u13cc\u13cd\u0001\u0000\u0000\u0000\u13cd\u13d3\u0001\u0000\u0000\u0000"+
55191 		"\u13ce\u13cf\u0005\u001f\u0000\u0000\u13cf\u13d0\u0003\u02c4\u0162\u0000"+
55192 		"\u13d0\u13d1\u0005 \u0000\u0000\u13d1\u13d3\u0001\u0000\u0000\u0000\u13d2"+
55193 		"\u13bf\u0001\u0000\u0000\u0000\u13d2\u13c6\u0001\u0000\u0000\u0000\u13d2"+
55194 		"\u13ce\u0001\u0000\u0000\u0000\u13d3\u02c9\u0001\u0000\u0000\u0000\u13d4"+
55195 		"\u13d6\u0005U\u0000\u0000\u13d5\u13d4\u0001\u0000\u0000\u0000\u13d5\u13d6"+
55196 		"\u0001\u0000\u0000\u0000\u13d6\u13d8\u0001\u0000\u0000\u0000\u13d7\u13d9"+
55197 		"\u0007H\u0000\u0000\u13d8\u13d7\u0001\u0000\u0000\u0000\u13d8\u13d9\u0001"+
55198 		"\u0000\u0000\u0000\u13d9\u13da\u0001\u0000\u0000\u0000\u13da\u13db\u0005"+
55199 		"V\u0000\u0000\u13db\u13dc\u0001\u0000\u0000\u0000\u13dc\u13de\u0003\u02c8"+
55200 		"\u0164\u0000\u13dd\u13df\u0003\u02cc\u0166\u0000\u13de\u13dd\u0001\u0000"+
55201 		"\u0000\u0000\u13de\u13df\u0001\u0000\u0000\u0000\u13df\u13ed\u0001\u0000"+
55202 		"\u0000\u0000\u13e0\u13e2\u0005U\u0000\u0000\u13e1\u13e0\u0001\u0000\u0000"+
55203 		"\u0000\u13e1\u13e2\u0001\u0000\u0000\u0000\u13e2\u13e3\u0001\u0000\u0000"+
55204 		"\u0000\u13e3\u13e5\u0007I\u0000\u0000\u13e4\u13e6\u0005Y\u0000\u0000\u13e5"+
55205 		"\u13e4\u0001\u0000\u0000\u0000\u13e5\u13e6\u0001\u0000\u0000\u0000\u13e6"+
55206 		"\u13e7\u0001\u0000\u0000\u0000\u13e7\u13e8\u0005V\u0000\u0000\u13e8\u13ea"+
55207 		"\u0003\u02c8\u0164\u0000\u13e9\u13eb\u0003\u02cc\u0166\u0000\u13ea\u13e9"+
55208 		"\u0001\u0000\u0000\u0000\u13ea\u13eb\u0001\u0000\u0000\u0000\u13eb\u13ed"+
55209 		"\u0001\u0000\u0000\u0000\u13ec\u13d5\u0001\u0000\u0000\u0000\u13ec\u13e1"+
55210 		"\u0001\u0000\u0000\u0000\u13ed\u02cb\u0001\u0000\u0000\u0000\u13ee\u13ef"+
55211 		"\u0005`\u0000\u0000\u13ef\u13f3\u0003b1\u0000\u13f0\u13f1\u0005]\u0000"+
55212 		"\u0000\u13f1\u13f3\u0003P(\u0000\u13f2\u13ee\u0001\u0000\u0000\u0000\u13f2"+
55213 		"\u13f0\u0001\u0000\u0000\u0000\u13f3\u02cd\u0001\u0000\u0000\u0000\u13f4"+
55214 		"\u13f5\u0005^\u0000\u0000\u13f5\u13f6\u0003b1\u0000\u13f6\u02cf\u0001"+
55215 		"\u0000\u0000\u0000\u13f7\u13f8\u0005t\u0000\u0000\u13f8\u13f9\u0005u\u0000"+
55216 		"\u0000\u13f9\u13fe\u0003\u0092I\u0000\u13fa\u13fb\u0005%\u0000\u0000\u13fb"+
55217 		"\u13fd\u0003\u0092I\u0000\u13fc\u13fa\u0001\u0000\u0000\u0000\u13fd\u1400"+
55218 		"\u0001\u0000\u0000\u0000\u13fe\u13fc\u0001\u0000\u0000\u0000\u13fe\u13ff"+
55219 		"\u0001\u0000\u0000\u0000\u13ff\u02d1\u0001\u0000\u0000\u0000\u1400\u13fe"+
55220 		"\u0001\u0000\u0000\u0000\u1401\u1402\u0005x\u0000\u0000\u1402\u1403\u0003"+
55221 		"b1\u0000\u1403\u02d3\u0001\u0000\u0000\u0000\u1404\u1405\u0005\u001f\u0000"+
55222 		"\u0000\u1405\u1406\u0003\u02b0\u0158\u0000\u1406\u1407\u0005 \u0000\u0000"+
55223 		"\u1407\u02d5\u0001\u0000\u0000\u0000\u1408\u1409\u0005L\u0000\u0000\u1409"+
55224 		"\u140a\u0003\u02d8\u016c\u0000\u140a\u02d7\u0001\u0000\u0000\u0000\u140b"+
55225 		"\u1410\u0003\u02da\u016d\u0000\u140c\u140d\u0005%\u0000\u0000\u140d\u140f"+
55226 		"\u0003\u02da\u016d\u0000\u140e\u140c\u0001\u0000\u0000\u0000\u140f\u1412"+
55227 		"\u0001\u0000\u0000\u0000\u1410\u140e\u0001\u0000\u0000\u0000\u1410\u1411"+
55228 		"\u0001\u0000\u0000\u0000\u1411\u02d9\u0001\u0000\u0000\u0000\u1412\u1410"+
55229 		"\u0001\u0000\u0000\u0000\u1413\u1415\u0003*\u0015\u0000\u1414\u1416\u0003"+
55230 		"P(\u0000\u1415\u1414\u0001\u0000\u0000\u0000\u1415\u1416\u0001\u0000\u0000"+
55231 		"\u0000\u1416\u1417\u0001\u0000\u0000\u0000\u1417\u1418\u0005_\u0000\u0000"+
55232 		"\u1418\u1419\u0003\u02d4\u016a\u0000\u1419\u02db\u0001\u0000\u0000\u0000"+
55233 		"\u141a\u141d\u0005\u01b7\u0000\u0000\u141b\u141e\u0003\u02de\u016f\u0000"+
55234 		"\u141c\u141e\u0003\u02e2\u0171\u0000\u141d\u141b\u0001\u0000\u0000\u0000"+
55235 		"\u141d\u141c\u0001\u0000\u0000\u0000\u141e\u1424\u0001\u0000\u0000\u0000"+
55236 		"\u141f\u1420\u0005J\u0000\u0000\u1420\u1422\u0003\u02e4\u0172\u0000\u1421"+
55237 		"\u1423\u0003P(\u0000\u1422\u1421\u0001\u0000\u0000\u0000\u1422\u1423\u0001"+
55238 		"\u0000\u0000\u0000\u1423\u1425\u0001\u0000\u0000\u0000\u1424\u141f\u0001"+
55239 		"\u0000\u0000\u0000\u1424\u1425\u0001\u0000\u0000\u0000\u1425\u02dd\u0001"+
55240 		"\u0000\u0000\u0000\u1426\u142b\u0003\u02e0\u0170\u0000\u1427\u1428\u0005"+
55241 		"%\u0000\u0000\u1428\u142a\u0003\u02e0\u0170\u0000\u1429\u1427\u0001\u0000"+
55242 		"\u0000\u0000\u142a\u142d\u0001\u0000\u0000\u0000\u142b\u1429\u0001\u0000"+
55243 		"\u0000\u0000\u142b\u142c\u0001\u0000\u0000\u0000\u142c\u02df\u0001\u0000"+
55244 		"\u0000\u0000\u142d\u142b\u0001\u0000\u0000\u0000\u142e\u142f\u0007J\u0000"+
55245 		"\u0000\u142f\u1430\u0005\u0014\u0000\u0000\u1430\u1435\u0003N\'\u0000"+
55246 		"\u1431\u1433\u0005_\u0000\u0000\u1432\u1431\u0001\u0000\u0000\u0000\u1432"+
55247 		"\u1433\u0001\u0000\u0000\u0000\u1433\u1434\u0001\u0000\u0000\u0000\u1434"+
55248 		"\u1436\u0003\\.\u0000\u1435\u1432\u0001\u0000\u0000\u0000\u1435\u1436"+
55249 		"\u0001\u0000\u0000\u0000\u1436\u02e1\u0001\u0000\u0000\u0000\u1437\u1438"+
55250 		"\u0007J\u0000\u0000\u1438\u1439\u0005\u0015\u0000\u0000\u1439\u02e3\u0001"+
55251 		"\u0000\u0000\u0000\u143a\u143b\u0005*\u0000\u0000\u143b\u143e\u0003N\'"+
55252 		"\u0000\u143c\u143e\u0003@ \u0000\u143d\u143a\u0001\u0000\u0000\u0000\u143d"+
55253 		"\u143c\u0001\u0000\u0000\u0000\u143e\u02e5\u0001\u0000\u0000\u0000\u143f"+
55254 		"\u1440\u0007K\u0000\u0000\u1440\u1486\u0005t\u0000\u0000\u1441\u1442\u0007"+
55255 		"L\u0000\u0000\u1442\u1486\u0005M\u0000\u0000\u1443\u1444\u0007M\u0000"+
55256 		"\u0000\u1444\u1486\u0005V\u0000\u0000\u1445\u1446\u0005\u00bf\u0000\u0000"+
55257 		"\u1446\u1486\u0005\u00c0\u0000\u0000\u1447\u1448\u0005\u00c1\u0000\u0000"+
55258 		"\u1448\u1486\u0005\u02b0\u0000\u0000\u1449\u144a\u0005\u00c2\u0000\u0000"+
55259 		"\u144a\u1486\u0005s\u0000\u0000\u144b\u144c\u0007N\u0000\u0000\u144c\u1486"+
55260 		"\u0005\u01cc\u0000\u0000\u144d\u144e\u0007N\u0000\u0000\u144e\u1486\u0005"+
55261 		"\u01cd\u0000\u0000\u144f\u1486\u0005\u01ce\u0000\u0000\u1450\u1451\u0005"+
55262 		"\u00c3\u0000\u0000\u1451\u1486\u0005\u00c4\u0000\u0000\u1452\u1453\u0005"+
55263 		"\u01cf\u0000\u0000\u1453\u1486\u0005\u00c4\u0000\u0000\u1454\u1455\u0005"+
55264 		"\u01d0\u0000\u0000\u1455\u1456\u0005\u0018\u0000\u0000\u1456\u1486\u0005"+
55265 		"\u02b2\u0000\u0000\u1457\u1458\u0005\u01d1\u0000\u0000\u1458\u1459\u0005"+
55266 		"\u0018\u0000\u0000\u1459\u1486\u0005\u02b2\u0000\u0000\u145a\u145b\u0005"+
55267 		"\u0110\u0000\u0000\u145b\u1486\u0005\u02b0\u0000\u0000\u145c\u145d\u0005"+
55268 		"\u01d2\u0000\u0000\u145d\u1486\u0005\u02b0\u0000\u0000\u145e\u1486\u0005"+
55269 		"\u01d3\u0000\u0000\u145f\u1460\u0005\u00c5\u0000\u0000\u1460\u1461\u0005"+
55270 		"d\u0000\u0000\u1461\u1462\u0005\u001f\u0000\u0000\u1462\u1463\u0005*\u0000"+
55271 		"\u0000\u1463\u1469\u0003N\'\u0000\u1464\u1468\u0005\u00df\u0000\u0000"+
55272 		"\u1465\u1466\u0005\u0018\u0000\u0000\u1466\u1468\u0003*\u0015\u0000\u1467"+
55273 		"\u1464\u0001\u0000\u0000\u0000\u1467\u1465\u0001\u0000\u0000\u0000\u1468"+
55274 		"\u146b\u0001\u0000\u0000\u0000\u1469\u1467\u0001\u0000\u0000\u0000\u1469"+
55275 		"\u146a\u0001\u0000\u0000\u0000\u146a\u146c\u0001\u0000\u0000\u0000\u146b"+
55276 		"\u1469\u0001\u0000\u0000\u0000\u146c\u146d\u0005 \u0000\u0000\u146d\u1486"+
55277 		"\u0001\u0000\u0000\u0000\u146e\u146f\u0005\u00c5\u0000\u0000\u146f\u1470"+
55278 		"\u0005d\u0000\u0000\u1470\u1486\u0005\u00df\u0000\u0000\u1471\u1472\u0005"+
55279 		"\u01d4\u0000\u0000\u1472\u1486\u0007<\u0000\u0000\u1473\u1474\u0005\u01d5"+
55280 		"\u0000\u0000\u1474\u1486\u0005\u02b0\u0000\u0000\u1475\u1486\u0005\u01d6"+
55281 		"\u0000\u0000\u1476\u1477\u0005\u01d7\u0000\u0000\u1477\u1486\u0005\u00c4"+
55282 		"\u0000\u0000\u1478\u1479\u0005\u00bc\u0000\u0000\u1479\u147a\u0005\u00c8"+
55283 		"\u0000\u0000\u147a\u147e\u0005\u001f\u0000\u0000\u147b\u147d\u0003\u02e8"+
55284 		"\u0174\u0000\u147c\u147b\u0001\u0000\u0000\u0000\u147d\u1480\u0001\u0000"+
55285 		"\u0000\u0000\u147e\u147c\u0001\u0000\u0000\u0000\u147e\u147f\u0001\u0000"+
55286 		"\u0000\u0000\u147f\u1481\u0001\u0000\u0000\u0000\u1480\u147e\u0001\u0000"+
55287 		"\u0000\u0000\u1481\u1486\u0005 \u0000\u0000\u1482\u1483\u0005\u00bc\u0000"+
55288 		"\u0000\u1483\u1484\u0005\u00c4\u0000\u0000\u1484\u1486\u0005\u02b5\u0000"+
55289 		"\u0000\u1485\u143f\u0001\u0000\u0000\u0000\u1485\u1441\u0001\u0000\u0000"+
55290 		"\u0000\u1485\u1443\u0001\u0000\u0000\u0000\u1485\u1445\u0001\u0000\u0000"+
55291 		"\u0000\u1485\u1447\u0001\u0000\u0000\u0000\u1485\u1449\u0001\u0000\u0000"+
55292 		"\u0000\u1485\u144b\u0001\u0000\u0000\u0000\u1485\u144d\u0001\u0000\u0000"+
55293 		"\u0000\u1485\u144f\u0001\u0000\u0000\u0000\u1485\u1450\u0001\u0000\u0000"+
55294 		"\u0000\u1485\u1452\u0001\u0000\u0000\u0000\u1485\u1454\u0001\u0000\u0000"+
55295 		"\u0000\u1485\u1457\u0001\u0000\u0000\u0000\u1485\u145a\u0001\u0000\u0000"+
55296 		"\u0000\u1485\u145c\u0001\u0000\u0000\u0000\u1485\u145e\u0001\u0000\u0000"+
55297 		"\u0000\u1485\u145f\u0001\u0000\u0000\u0000\u1485\u146e\u0001\u0000\u0000"+
55298 		"\u0000\u1485\u1471\u0001\u0000\u0000\u0000\u1485\u1473\u0001\u0000\u0000"+
55299 		"\u0000\u1485\u1475\u0001\u0000\u0000\u0000\u1485\u1476\u0001\u0000\u0000"+
55300 		"\u0000\u1485\u1478\u0001\u0000\u0000\u0000\u1485\u1482\u0001\u0000\u0000"+
55301 		"\u0000\u1486\u02e7\u0001\u0000\u0000\u0000\u1487\u1488\u0005\'\u0000\u0000"+
55302 		"\u1488\u1489\u0005\u01ba\u0000\u0000\u1489\u14be\u0005\'\u0000\u0000\u148a"+
55303 		"\u148b\u0005\'\u0000\u0000\u148b\u148c\u0005\u01bb\u0000\u0000\u148c\u14be"+
55304 		"\u0005\'\u0000\u0000\u148d\u148e\u0005\'\u0000\u0000\u148e\u148f\u0005"+
55305 		"\u01bc\u0000\u0000\u148f\u14be\u0005\'\u0000\u0000\u1490\u1491\u0005\'"+
55306 		"\u0000\u0000\u1491\u1492\u0005\u01bd\u0000\u0000\u1492\u14be\u0005\'\u0000"+
55307 		"\u0000\u1493\u1494\u0005\'\u0000\u0000\u1494\u1495\u0005\u01be\u0000\u0000"+
55308 		"\u1495\u14be\u0005\'\u0000\u0000\u1496\u1497\u0005\'\u0000\u0000\u1497"+
55309 		"\u1498\u0005\u01bf\u0000\u0000\u1498\u14be\u0005\'\u0000\u0000\u1499\u149a"+
55310 		"\u0005\'\u0000\u0000\u149a\u149b\u0005\u01c0\u0000\u0000\u149b\u14be\u0005"+
55311 		"\'\u0000\u0000\u149c\u149d\u0005\'\u0000\u0000\u149d\u149e\u0005\u01c1"+
55312 		"\u0000\u0000\u149e\u14be\u0005\'\u0000\u0000\u149f\u14a0\u0005\'\u0000"+
55313 		"\u0000\u14a0\u14a1\u0005\u01c2\u0000\u0000\u14a1\u14be\u0005\'\u0000\u0000"+
55314 		"\u14a2\u14a3\u0005\'\u0000\u0000\u14a3\u14a4\u0005\u01c3\u0000\u0000\u14a4"+
55315 		"\u14be\u0005\'\u0000\u0000\u14a5\u14a6\u0005\'\u0000\u0000\u14a6\u14a7"+
55316 		"\u0005\u01c4\u0000\u0000\u14a7\u14be\u0005\'\u0000\u0000\u14a8\u14a9\u0005"+
55317 		"\'\u0000\u0000\u14a9\u14aa\u0005\u01c5\u0000\u0000\u14aa\u14be\u0005\'"+
55318 		"\u0000\u0000\u14ab\u14ac\u0005\'\u0000\u0000\u14ac\u14ad\u0005\u01c6\u0000"+
55319 		"\u0000\u14ad\u14be\u0005\'\u0000\u0000\u14ae\u14af\u0005\'\u0000\u0000"+
55320 		"\u14af\u14b0\u0005\u01c7\u0000\u0000\u14b0\u14be\u0005\'\u0000\u0000\u14b1"+
55321 		"\u14b2\u0005\'\u0000\u0000\u14b2\u14b3\u0005\u01c8\u0000\u0000\u14b3\u14be"+
55322 		"\u0005\'\u0000\u0000\u14b4\u14b5\u0005\'\u0000\u0000\u14b5\u14b6\u0005"+
55323 		"\u01c9\u0000\u0000\u14b6\u14be\u0005\'\u0000\u0000\u14b7\u14b8\u0005\'"+
55324 		"\u0000\u0000\u14b8\u14b9\u0005\u01ca\u0000\u0000\u14b9\u14be\u0005\'\u0000"+
55325 		"\u0000\u14ba\u14bb\u0005\'\u0000\u0000\u14bb\u14bc\u0005\u01cb\u0000\u0000"+
55326 		"\u14bc\u14be\u0005\'\u0000\u0000\u14bd\u1487\u0001\u0000\u0000\u0000\u14bd"+
55327 		"\u148a\u0001\u0000\u0000\u0000\u14bd\u148d\u0001\u0000\u0000\u0000\u14bd"+
55328 		"\u1490\u0001\u0000\u0000\u0000\u14bd\u1493\u0001\u0000\u0000\u0000\u14bd"+
55329 		"\u1496\u0001\u0000\u0000\u0000\u14bd\u1499\u0001\u0000\u0000\u0000\u14bd"+
55330 		"\u149c\u0001\u0000\u0000\u0000\u14bd\u149f\u0001\u0000\u0000\u0000\u14bd"+
55331 		"\u14a2\u0001\u0000\u0000\u0000\u14bd\u14a5\u0001\u0000\u0000\u0000\u14bd"+
55332 		"\u14a8\u0001\u0000\u0000\u0000\u14bd\u14ab\u0001\u0000\u0000\u0000\u14bd"+
55333 		"\u14ae\u0001\u0000\u0000\u0000\u14bd\u14b1\u0001\u0000\u0000\u0000\u14bd"+
55334 		"\u14b4\u0001\u0000\u0000\u0000\u14bd\u14b7\u0001\u0000\u0000\u0000\u14bd"+
55335 		"\u14ba\u0001\u0000\u0000\u0000\u14be\u02e9\u0001\u0000\u0000\u0000\u14bf"+
55336 		"\u14c3\u0005d\u0000\u0000\u14c0\u14c4\u0005\u029d\u0000\u0000\u14c1\u14c4"+
55337 		"\u0003\u02ec\u0176\u0000\u14c2\u14c4\u0003\u02f0\u0178\u0000\u14c3\u14c0"+
55338 		"\u0001\u0000\u0000\u0000\u14c3\u14c1\u0001\u0000\u0000\u0000\u14c3\u14c2"+
55339 		"\u0001\u0000\u0000\u0000\u14c4\u02eb\u0001\u0000\u0000\u0000\u14c5\u1500"+
55340 		"\u0005\u014a\u0000\u0000\u14c6\u14cb\u0005\u029e\u0000\u0000\u14c7\u14c8"+
55341 		"\u0005\u001f\u0000\u0000\u14c8\u14c9\u0003\u001c\u000e\u0000\u14c9\u14ca"+
55342 		"\u0005 \u0000\u0000\u14ca\u14cc\u0001\u0000\u0000\u0000\u14cb\u14c7\u0001"+
55343 		"\u0000\u0000\u0000\u14cb\u14cc\u0001\u0000\u0000\u0000\u14cc\u14cf\u0001"+
55344 		"\u0000\u0000\u0000\u14cd\u14cf\u0005\u00ef\u0000\u0000\u14ce\u14c6\u0001"+
55345 		"\u0000\u0000\u0000\u14ce\u14cd\u0001\u0000\u0000\u0000\u14cf\u14e5\u0001"+
55346 		"\u0000\u0000\u0000\u14d0\u14dc\u0003\u02ee\u0177\u0000\u14d1\u14da\u0005"+
55347 		"%\u0000\u0000\u14d2\u14db\u0005\u029f\u0000\u0000\u14d3\u14d8\u0005\u02a0"+
55348 		"\u0000\u0000\u14d4\u14d5\u0005\u001f\u0000\u0000\u14d5\u14d6\u0003\u001c"+
55349 		"\u000e\u0000\u14d6\u14d7\u0005 \u0000\u0000\u14d7\u14d9\u0001\u0000\u0000"+
55350 		"\u0000\u14d8\u14d4\u0001\u0000\u0000\u0000\u14d8\u14d9\u0001\u0000\u0000"+
55351 		"\u0000\u14d9\u14db\u0001\u0000\u0000\u0000\u14da\u14d2\u0001\u0000\u0000"+
55352 		"\u0000\u14da\u14d3\u0001\u0000\u0000\u0000\u14db\u14dd\u0001\u0000\u0000"+
55353 		"\u0000\u14dc\u14d1\u0001\u0000\u0000\u0000\u14dc\u14dd\u0001\u0000\u0000"+
55354 		"\u0000\u14dd\u14e3\u0001\u0000\u0000\u0000\u14de\u14df\u0005%\u0000\u0000"+
55355 		"\u14df\u14e1\u0005\u02a1\u0000\u0000\u14e0\u14e2\u0007O\u0000\u0000\u14e1"+
55356 		"\u14e0\u0001\u0000\u0000\u0000\u14e1\u14e2\u0001\u0000\u0000\u0000\u14e2"+
55357 		"\u14e4\u0001\u0000\u0000\u0000\u14e3\u14de\u0001\u0000\u0000\u0000\u14e3"+
55358 		"\u14e4\u0001\u0000\u0000\u0000\u14e4\u14e6\u0001\u0000\u0000\u0000\u14e5"+
55359 		"\u14d0\u0001\u0000\u0000\u0000\u14e5\u14e6\u0001\u0000\u0000\u0000\u14e6"+
55360 		"\u1501\u0001\u0000\u0000\u0000\u14e7\u14ed\u0005\u02a4\u0000\u0000\u14e8"+
55361 		"\u14eb\u0003\u02ee\u0177\u0000\u14e9\u14ea\u0005%\u0000\u0000\u14ea\u14ec"+
55362 		"\u0005\u029f\u0000\u0000\u14eb\u14e9\u0001\u0000\u0000\u0000\u14eb\u14ec"+
55363 		"\u0001\u0000\u0000\u0000\u14ec\u14ee\u0001\u0000\u0000\u0000\u14ed\u14e8"+
55364 		"\u0001\u0000\u0000\u0000\u14ed\u14ee\u0001\u0000\u0000\u0000\u14ee\u1501"+
55365 		"\u0001\u0000\u0000\u0000\u14ef\u14f4\u0005\u02a5\u0000\u0000\u14f0\u14f1"+
55366 		"\u0005\u001f\u0000\u0000\u14f1\u14f2\u0003\u001c\u000e\u0000\u14f2\u14f3"+
55367 		"\u0005 \u0000\u0000\u14f3\u14f5\u0001\u0000\u0000\u0000\u14f4\u14f0\u0001"+
55368 		"\u0000\u0000\u0000\u14f4\u14f5\u0001\u0000\u0000\u0000\u14f5\u14fe\u0001"+
55369 		"\u0000\u0000\u0000\u14f6\u14fc\u0003\u02ee\u0177\u0000\u14f7\u14f8\u0005"+
55370 		"%\u0000\u0000\u14f8\u14fa\u0005\u02a1\u0000\u0000\u14f9\u14fb\u0007O\u0000"+
55371 		"\u0000\u14fa\u14f9\u0001\u0000\u0000\u0000\u14fa\u14fb\u0001\u0000\u0000"+
55372 		"\u0000\u14fb\u14fd\u0001\u0000\u0000\u0000\u14fc\u14f7\u0001\u0000\u0000"+
55373 		"\u0000\u14fc\u14fd\u0001\u0000\u0000\u0000\u14fd\u14ff\u0001\u0000\u0000"+
55374 		"\u0000\u14fe\u14f6\u0001\u0000\u0000\u0000\u14fe\u14ff\u0001\u0000\u0000"+
55375 		"\u0000\u14ff\u1501\u0001\u0000\u0000\u0000\u1500\u14ce\u0001\u0000\u0000"+
55376 		"\u0000\u1500\u14e7\u0001\u0000\u0000\u0000\u1500\u14ef\u0001\u0000\u0000"+
55377 		"\u0000\u1501\u02ed\u0001\u0000\u0000\u0000\u1502\u1503\u0005%\u0000\u0000"+
55378 		"\u1503\u1504\u0005\u00d6\u0000\u0000\u1504\u1506\u0005\u02a6\u0000\u0000"+
55379 		"\u1505\u1502\u0001\u0000\u0000\u0000\u1505\u1506\u0001\u0000\u0000\u0000"+
55380 		"\u1506\u1509\u0001\u0000\u0000\u0000\u1507\u1508\u0005%\u0000\u0000\u1508"+
55381 		"\u150a\u0005\u00ae\u0000\u0000\u1509\u1507\u0001\u0000\u0000\u0000\u1509"+
55382 		"\u150a\u0001\u0000\u0000\u0000\u150a\u1513\u0001\u0000\u0000\u0000\u150b"+
55383 		"\u150c\u0005%\u0000\u0000\u150c\u1511\u0005\u02a7\u0000\u0000\u150d\u150e"+
55384 		"\u0005\u001f\u0000\u0000\u150e\u150f\u0003\u001c\u000e\u0000\u150f\u1510"+
55385 		"\u0005 \u0000\u0000\u1510\u1512\u0001\u0000\u0000\u0000\u1511\u150d\u0001"+
55386 		"\u0000\u0000\u0000\u1511\u1512\u0001\u0000\u0000\u0000\u1512\u1514\u0001"+
55387 		"\u0000\u0000\u0000\u1513\u150b\u0001\u0000\u0000\u0000\u1513\u1514\u0001"+
55388 		"\u0000\u0000\u0000\u1514\u02ef\u0001\u0000\u0000\u0000\u1515\u1516\u0005"+
55389 		"\u02a8\u0000\u0000\u1516\u1529\u0007P\u0000\u0000\u1517\u1518\u0005%\u0000"+
55390 		"\u0000\u1518\u151d\u0005\u02a7\u0000\u0000\u1519\u151a\u0005\u001f\u0000"+
55391 		"\u0000\u151a\u151b\u0003\u001c\u000e\u0000\u151b\u151c\u0005 \u0000\u0000"+
55392 		"\u151c\u151e\u0001\u0000\u0000\u0000\u151d\u1519\u0001\u0000\u0000\u0000"+
55393 		"\u151d\u151e\u0001\u0000\u0000\u0000\u151e\u1520\u0001\u0000\u0000\u0000"+
55394 		"\u151f\u1517\u0001\u0000\u0000\u0000\u151f\u1520\u0001\u0000\u0000\u0000"+
55395 		"\u1520\u1523\u0001\u0000\u0000\u0000\u1521\u1522\u0005%\u0000\u0000\u1522"+
55396 		"\u1524\u0005\u02a9\u0000\u0000\u1523\u1521\u0001\u0000\u0000\u0000\u1523"+
55397 		"\u1524\u0001\u0000\u0000\u0000\u1524\u1527\u0001\u0000\u0000\u0000\u1525"+
55398 		"\u1526\u0005%\u0000\u0000\u1526\u1528\u0005\u02aa\u0000\u0000\u1527\u1525"+
55399 		"\u0001\u0000\u0000\u0000\u1527\u1528\u0001\u0000\u0000\u0000\u1528\u152a"+
55400 		"\u0001\u0000\u0000\u0000\u1529\u151f\u0001\u0000\u0000\u0000\u1529\u152a"+
55401 		"\u0001\u0000\u0000\u0000\u152a\u02f1\u0001\u0000\u0000\u0000\u152b\u1530"+
55402 		"\u0005L\u0000\u0000\u152c\u152e\u0003\u02f4\u017a\u0000\u152d\u152f\u0005"+
55403 		"%\u0000\u0000\u152e\u152d\u0001\u0000\u0000\u0000\u152e\u152f\u0001\u0000"+
55404 		"\u0000\u0000\u152f\u1531\u0001\u0000\u0000\u0000\u1530\u152c\u0001\u0000"+
55405 		"\u0000\u0000\u1530\u1531\u0001\u0000\u0000\u0000\u1531\u1533\u0001\u0000"+
55406 		"\u0000\u0000\u1532\u1534\u0003\u02d8\u016c\u0000\u1533\u1532\u0001\u0000"+
55407 		"\u0000\u0000\u1533\u1534\u0001\u0000\u0000\u0000\u1534\u02f3\u0001\u0000"+
55408 		"\u0000\u0000\u1535\u1536\u0005\u02ab\u0000\u0000\u1536\u1537\u0005\u001f"+
55409 		"\u0000\u0000\u1537\u153c\u0003\u02f6\u017b\u0000\u1538\u1539\u0005%\u0000"+
55410 		"\u0000\u1539\u153b\u0003\u02f6\u017b\u0000\u153a\u1538\u0001\u0000\u0000"+
55411 		"\u0000\u153b\u153e\u0001\u0000\u0000\u0000\u153c\u153a\u0001\u0000\u0000"+
55412 		"\u0000\u153c\u153d\u0001\u0000\u0000\u0000\u153d\u153f\u0001\u0000\u0000"+
55413 		"\u0000\u153e\u153c\u0001\u0000\u0000\u0000\u153f\u1540\u0005 \u0000\u0000"+
55414 		"\u1540\u02f5\u0001\u0000\u0000\u0000\u1541\u1542\u0003\u02f8\u017c\u0000"+
55415 		"\u1542\u1543\u0005_\u0000\u0000\u1543\u1544\u0003\u02fa\u017d\u0000\u1544"+
55416 		"\u1547\u0001\u0000\u0000\u0000\u1545\u1547\u0003\u02fc\u017e\u0000\u1546"+
55417 		"\u1541\u0001\u0000\u0000\u0000\u1546\u1545\u0001\u0000\u0000\u0000\u1547"+
55418 		"\u02f7\u0001\u0000\u0000\u0000\u1548\u1549\u0003\u001c\u000e\u0000\u1549"+
55419 		"\u02f9\u0001\u0000\u0000\u0000\u154a\u154b\u0003*\u0015\u0000\u154b\u02fb"+
55420 		"\u0001\u0000\u0000\u0000\u154c\u154d\u0005\u0098\u0000\u0000\u154d\u154e"+
55421 		"\u0003\u02f8\u017c\u0000\u154e\u02fd\u0001\u0000\u0000\u0000\u154f\u1552"+
55422 		"\u00057\u0000\u0000\u1550\u1553\u0003\u0300\u0180\u0000\u1551\u1553\u0003"+
55423 		"\u0302\u0181\u0000\u1552\u1550\u0001\u0000\u0000\u0000\u1552\u1551\u0001"+
55424 		"\u0000\u0000\u0000\u1553\u02ff\u0001\u0000\u0000\u0000\u1554\u1557\u0003"+
55425 		"\u0304\u0182\u0000\u1555\u1556\u0005`\u0000\u0000\u1556\u1558\u0003\u0306"+
55426 		"\u0183\u0000\u1557\u1555\u0001\u0000\u0000\u0000\u1557\u1558\u0001\u0000"+
55427 		"\u0000\u0000\u1558\u1559\u0001\u0000\u0000\u0000\u1559\u155a\u0005e\u0000"+
55428 		"\u0000\u155a\u155f\u0003\u030e\u0187\u0000\u155b\u155c\u0005%\u0000\u0000"+
55429 		"\u155c\u155e\u0003\u030e\u0187\u0000\u155d\u155b\u0001\u0000\u0000\u0000"+
55430 		"\u155e\u1561\u0001\u0000\u0000\u0000\u155f\u155d\u0001\u0000\u0000\u0000"+
55431 		"\u155f\u1560\u0001\u0000\u0000\u0000\u1560\u1565\u0001\u0000\u0000\u0000"+
55432 		"\u1561\u155f\u0001\u0000\u0000\u0000\u1562\u1563\u0005L\u0000\u0000\u1563"+
55433 		"\u1564\u00057\u0000\u0000\u1564\u1566\u0005\u00e6\u0000\u0000\u1565\u1562"+
55434 		"\u0001\u0000\u0000\u0000\u1565\u1566\u0001\u0000\u0000\u0000\u1566\u1569"+
55435 		"\u0001\u0000\u0000\u0000\u1567\u1568\u0005_\u0000\u0000\u1568\u156a\u0003"+
55436 		"\u030e\u0187\u0000\u1569\u1567\u0001\u0000\u0000\u0000\u1569\u156a\u0001"+
55437 		"\u0000\u0000\u0000\u156a\u0301\u0001\u0000\u0000\u0000\u156b\u156e\u0003"+
55438 		"\u0308\u0184\u0000\u156c\u156d\u0005`\u0000\u0000\u156d\u156f\u0003\u030a"+
55439 		"\u0185\u0000\u156e\u156c\u0001\u0000\u0000\u0000\u156e\u156f\u0001\u0000"+
55440 		"\u0000\u0000\u156f\u1570\u0001\u0000\u0000\u0000\u1570\u1571\u0005e\u0000"+
55441 		"\u0000\u1571\u1576\u0003\u030e\u0187\u0000\u1572\u1573\u0005%\u0000\u0000"+
55442 		"\u1573\u1575\u0003\u030e\u0187\u0000\u1574\u1572\u0001\u0000\u0000\u0000"+
55443 		"\u1575\u1578\u0001\u0000\u0000\u0000\u1576\u1574\u0001\u0000\u0000\u0000"+
55444 		"\u1576\u1577\u0001\u0000\u0000\u0000\u1577\u157c\u0001\u0000\u0000\u0000"+
55445 		"\u1578\u1576\u0001\u0000\u0000\u0000\u1579\u157a\u0005L\u0000\u0000\u157a"+
55446 		"\u157b\u00057\u0000\u0000\u157b\u157d\u0005\u00e6\u0000\u0000\u157c\u1579"+
55447 		"\u0001\u0000\u0000\u0000\u157c\u157d\u0001\u0000\u0000\u0000\u157d\u0303"+
55448 		"\u0001\u0000\u0000\u0000\u157e\u1580\u0003\u031e\u018f\u0000\u157f\u1581"+
55449 		"\u0003P(\u0000\u1580\u157f\u0001\u0000\u0000\u0000\u1580\u1581\u0001\u0000"+
55450 		"\u0000\u0000\u1581\u1589\u0001\u0000\u0000\u0000\u1582\u1583\u0005%\u0000"+
55451 		"\u0000\u1583\u1585\u0003\u031e\u018f\u0000\u1584\u1586\u0003P(\u0000\u1585"+
55452 		"\u1584\u0001\u0000\u0000\u0000\u1585\u1586\u0001\u0000\u0000\u0000\u1586"+
55453 		"\u1588\u0001\u0000\u0000\u0000\u1587\u1582\u0001\u0000\u0000\u0000\u1588"+
55454 		"\u158b\u0001\u0000\u0000\u0000\u1589\u1587\u0001\u0000\u0000\u0000\u1589"+
55455 		"\u158a\u0001\u0000\u0000\u0000\u158a\u0305\u0001\u0000\u0000\u0000\u158b"+
55456 		"\u1589\u0001\u0000\u0000\u0000\u158c\u158d\u0003\u035c\u01ae\u0000\u158d"+
55457 		"\u158e\u0005\u000e\u0000\u0000\u158e\u158f\u0005\u000e\u0000\u0000\u158f"+
55458 		"\u1591\u0001\u0000\u0000\u0000\u1590\u158c\u0001\u0000\u0000\u0000\u1590"+
55459 		"\u1591\u0001\u0000\u0000\u0000\u1591\u1592\u0001\u0000\u0000\u0000\u1592"+
55460 		"\u1593\u0003\u030c\u0186\u0000\u1593\u0307\u0001\u0000\u0000\u0000\u1594"+
55461 		"\u1599\u0003\u031e\u018f\u0000\u1595\u1596\u0005%\u0000\u0000\u1596\u1598"+
55462 		"\u0003\u031e\u018f\u0000\u1597\u1595\u0001\u0000\u0000\u0000\u1598\u159b"+
55463 		"\u0001\u0000\u0000\u0000\u1599\u1597\u0001\u0000\u0000\u0000\u1599\u159a"+
55464 		"\u0001\u0000\u0000\u0000\u159a\u0309\u0001\u0000\u0000\u0000\u159b\u1599"+
55465 		"\u0001\u0000\u0000\u0000\u159c\u159d\u0003\u035e\u01af\u0000\u159d\u159e"+
55466 		"\u0005\u000e\u0000\u0000\u159e\u159f\u0005\u000e\u0000\u0000\u159f\u15a1"+
55467 		"\u0001\u0000\u0000\u0000\u15a0\u159c\u0001\u0000\u0000\u0000\u15a0\u15a1"+
55468 		"\u0001\u0000\u0000\u0000\u15a1\u15a2\u0001\u0000\u0000\u0000\u15a2\u15a3"+
55469 		"\u0003\u030c\u0186\u0000\u15a3\u030b\u0001\u0000\u0000\u0000\u15a4\u15a5"+
55470 		"\u0003L&\u0000\u15a5\u15a6\u0005\u0014\u0000\u0000\u15a6\u15a8\u0001\u0000"+
55471 		"\u0000\u0000\u15a7\u15a4\u0001\u0000\u0000\u0000\u15a7\u15a8\u0001\u0000"+
55472 		"\u0000\u0000\u15a8\u15a9\u0001\u0000\u0000\u0000\u15a9\u15aa\u0003N\'"+
55473 		"\u0000\u15aa\u030d\u0001\u0000\u0000\u0000\u15ab\u15ac\u0003\u037c\u01be"+
55474 		"\u0000\u15ac\u030f\u0001\u0000\u0000\u0000\u15ad\u15b3\u00058\u0000\u0000"+
55475 		"\u15ae\u15b0\u0003\u031c\u018e\u0000\u15af\u15ae\u0001\u0000\u0000\u0000"+
55476 		"\u15af\u15b0\u0001\u0000\u0000\u0000\u15b0\u15b1\u0001\u0000\u0000\u0000"+
55477 		"\u15b1\u15b4\u0003\u0312\u0189\u0000\u15b2\u15b4\u0003\u0314\u018a\u0000"+
55478 		"\u15b3\u15af\u0001\u0000\u0000\u0000\u15b3\u15b2\u0001\u0000\u0000\u0000"+
55479 		"\u15b4\u0311\u0001\u0000\u0000\u0000\u15b5\u15b8\u0003\u0304\u0182\u0000"+
55480 		"\u15b6\u15b7\u0005`\u0000\u0000\u15b7\u15b9\u0003\u0306\u0183\u0000\u15b8"+
55481 		"\u15b6\u0001\u0000\u0000\u0000\u15b8\u15b9\u0001\u0000\u0000\u0000\u15b9"+
55482 		"\u15ba\u0001\u0000\u0000\u0000\u15ba\u15bb\u0007Q\u0000\u0000\u15bb\u15c0"+
55483 		"\u0003\u030e\u0187\u0000\u15bc\u15bd\u0005%\u0000\u0000\u15bd\u15bf\u0003"+
55484 		"\u030e\u0187\u0000\u15be\u15bc\u0001\u0000\u0000\u0000\u15bf\u15c2\u0001"+
55485 		"\u0000\u0000\u0000\u15c0\u15be\u0001\u0000\u0000\u0000\u15c0\u15c1\u0001"+
55486 		"\u0000\u0000\u0000\u15c1\u15c4\u0001\u0000\u0000\u0000\u15c2\u15c0\u0001"+
55487 		"\u0000\u0000\u0000\u15c3\u15c5\u0005\u00e2\u0000\u0000\u15c4\u15c3\u0001"+
55488 		"\u0000\u0000\u0000\u15c4\u15c5\u0001\u0000\u0000\u0000\u15c5\u15c8\u0001"+
55489 		"\u0000\u0000\u0000\u15c6\u15c7\u0005_\u0000\u0000\u15c7\u15c9\u0003\u030e"+
55490 		"\u0187\u0000\u15c8\u15c6\u0001\u0000\u0000\u0000\u15c8\u15c9\u0001\u0000"+
55491 		"\u0000\u0000\u15c9\u0313\u0001\u0000\u0000\u0000\u15ca\u15cd\u0003\u0308"+
55492 		"\u0184\u0000\u15cb\u15cc\u0005`\u0000\u0000\u15cc\u15ce\u0003\u030a\u0185"+
55493 		"\u0000\u15cd\u15cb\u0001\u0000\u0000\u0000\u15cd\u15ce\u0001\u0000\u0000"+
55494 		"\u0000\u15ce\u15cf\u0001\u0000\u0000\u0000\u15cf\u15d0\u0007Q\u0000\u0000"+
55495 		"\u15d0\u15d5\u0003\u030e\u0187\u0000\u15d1\u15d2\u0005%\u0000\u0000\u15d2"+
55496 		"\u15d4\u0003\u030e\u0187\u0000\u15d3\u15d1\u0001\u0000\u0000\u0000\u15d4"+
55497 		"\u15d7\u0001\u0000\u0000\u0000\u15d5\u15d3\u0001\u0000\u0000\u0000\u15d5"+
55498 		"\u15d6\u0001\u0000\u0000\u0000\u15d6\u15d9\u0001\u0000\u0000\u0000\u15d7"+
55499 		"\u15d5\u0001\u0000\u0000\u0000\u15d8\u15da\u0005\u00e2\u0000\u0000\u15d9"+
55500 		"\u15d8\u0001\u0000\u0000\u0000\u15d9\u15da\u0001\u0000\u0000\u0000\u15da"+
55501 		"\u0315\u0001\u0000\u0000\u0000\u15db\u15de\u0005\u00fc\u0000\u0000\u15dc"+
55502 		"\u15df\u0003\u0318\u018c\u0000\u15dd\u15df\u0003\u031a\u018d\u0000\u15de"+
55503 		"\u15dc\u0001\u0000\u0000\u0000\u15de\u15dd\u0001\u0000\u0000\u0000\u15df"+
55504 		"\u0317\u0001\u0000\u0000\u0000\u15e0\u15e3\u0003\u0304\u0182\u0000\u15e1"+
55505 		"\u15e2\u0005`\u0000\u0000\u15e2\u15e4\u0003\u0306\u0183\u0000\u15e3\u15e1"+
55506 		"\u0001\u0000\u0000\u0000\u15e3\u15e4\u0001\u0000\u0000\u0000\u15e4\u15e5"+
55507 		"\u0001\u0000\u0000\u0000\u15e5\u15e6\u0005e\u0000\u0000\u15e6\u15eb\u0003"+
55508 		"\u030e\u0187\u0000\u15e7\u15e8\u0005%\u0000\u0000\u15e8\u15ea\u0003\u030e"+
55509 		"\u0187\u0000\u15e9\u15e7\u0001\u0000\u0000\u0000\u15ea\u15ed\u0001\u0000"+
55510 		"\u0000\u0000\u15eb\u15e9\u0001\u0000\u0000\u0000\u15eb\u15ec\u0001\u0000"+
55511 		"\u0000\u0000\u15ec\u15ef\u0001\u0000\u0000\u0000\u15ed\u15eb\u0001\u0000"+
55512 		"\u0000\u0000\u15ee\u15f0\u0005\u00e2\u0000\u0000\u15ef\u15ee\u0001\u0000"+
55513 		"\u0000\u0000\u15ef\u15f0\u0001\u0000\u0000\u0000\u15f0\u15f3\u0001\u0000"+
55514 		"\u0000\u0000\u15f1\u15f2\u0005_\u0000\u0000\u15f2\u15f4\u0003\u030e\u0187"+
55515 		"\u0000\u15f3\u15f1\u0001\u0000\u0000\u0000\u15f3\u15f4\u0001\u0000\u0000"+
55516 		"\u0000\u15f4\u0319\u0001\u0000\u0000\u0000\u15f5\u15f8\u0003\u0308\u0184"+
55517 		"\u0000\u15f6\u15f7\u0005`\u0000\u0000\u15f7\u15f9\u0003\u030a\u0185\u0000"+
55518 		"\u15f8\u15f6\u0001\u0000\u0000\u0000\u15f8\u15f9\u0001\u0000\u0000\u0000"+
55519 		"\u15f9\u15fa\u0001\u0000\u0000\u0000\u15fa\u15fb\u0005e\u0000\u0000\u15fb"+
55520 		"\u1600\u0003\u030e\u0187\u0000\u15fc\u15fd\u0005%\u0000\u0000\u15fd\u15ff"+
55521 		"\u0003\u030e\u0187\u0000\u15fe\u15fc\u0001\u0000\u0000\u0000\u15ff\u1602"+
55522 		"\u0001\u0000\u0000\u0000\u1600\u15fe\u0001\u0000\u0000\u0000\u1600\u1601"+
55523 		"\u0001\u0000\u0000\u0000\u1601\u1604\u0001\u0000\u0000\u0000\u1602\u1600"+
55524 		"\u0001\u0000\u0000\u0000\u1603\u1605\u0005\u00e2\u0000\u0000\u1604\u1603"+
55525 		"\u0001\u0000\u0000\u0000\u1604\u1605\u0001\u0000\u0000\u0000\u1605\u031b"+
55526 		"\u0001\u0000\u0000\u0000\u1606\u1607\u00057\u0000\u0000\u1607\u1608\u0005"+
55527 		"\u00e6\u0000\u0000\u1608\u1609\u0005d\u0000\u0000\u1609\u031d\u0001\u0000"+
55528 		"\u0000\u0000\u160a\u160c\u0005p\u0000\u0000\u160b\u160d\u0005\u00e7\u0000"+
55529 		"\u0000\u160c\u160b\u0001\u0000\u0000\u0000\u160c\u160d\u0001\u0000\u0000"+
55530 		"\u0000\u160d\u1622\u0001\u0000\u0000\u0000\u160e\u1622\u0003\u034a\u01a5"+
55531 		"\u0000\u160f\u1622\u0003\u0348\u01a4\u0000\u1610\u1622\u0003\u034c\u01a6"+
55532 		"\u0000\u1611\u1622\u0003\u0344\u01a2\u0000\u1612\u1622\u0003\u0320\u0190"+
55533 		"\u0000\u1613\u1622\u0003\u0358\u01ac\u0000\u1614\u1622\u0003\u0326\u0193"+
55534 		"\u0000\u1615\u1622\u0003\u0328\u0194\u0000\u1616\u1622\u0003\u0330\u0198"+
55535 		"\u0000\u1617\u1622\u0003\u0342\u01a1\u0000\u1618\u1622\u0003\u034e\u01a7"+
55536 		"\u0000\u1619\u1622\u0003\u0332\u0199\u0000\u161a\u1622\u0003\u0334\u019a"+
55537 		"\u0000\u161b\u1622\u0003\u0322\u0191\u0000\u161c\u1622\u0003\u0324\u0192"+
55538 		"\u0000\u161d\u1622\u0003\u0336\u019b\u0000\u161e\u1622\u0003\u0346\u01a3"+
55539 		"\u0000\u161f\u1622\u0003\u0354\u01aa\u0000\u1620\u1622\u0003\u0356\u01ab"+
55540 		"\u0000\u1621\u160a\u0001\u0000\u0000\u0000\u1621\u160e\u0001\u0000\u0000"+
55541 		"\u0000\u1621\u160f\u0001\u0000\u0000\u0000\u1621\u1610\u0001\u0000\u0000"+
55542 		"\u0000\u1621\u1611\u0001\u0000\u0000\u0000\u1621\u1612\u0001\u0000\u0000"+
55543 		"\u0000\u1621\u1613\u0001\u0000\u0000\u0000\u1621\u1614\u0001\u0000\u0000"+
55544 		"\u0000\u1621\u1615\u0001\u0000\u0000\u0000\u1621\u1616\u0001\u0000\u0000"+
55545 		"\u0000\u1621\u1617\u0001\u0000\u0000\u0000\u1621\u1618\u0001\u0000\u0000"+
55546 		"\u0000\u1621\u1619\u0001\u0000\u0000\u0000\u1621\u161a\u0001\u0000\u0000"+
55547 		"\u0000\u1621\u161b\u0001\u0000\u0000\u0000\u1621\u161c\u0001\u0000\u0000"+
55548 		"\u0000\u1621\u161d\u0001\u0000\u0000\u0000\u1621\u161e\u0001\u0000\u0000"+
55549 		"\u0000\u1621\u161f\u0001\u0000\u0000\u0000\u1621\u1620\u0001\u0000\u0000"+
55550 		"\u0000\u1622\u031f\u0001\u0000\u0000\u0000\u1623\u1634\u00053\u0000\u0000"+
55551 		"\u1624\u1634\u0005\u0131\u0000\u0000\u1625\u1634\u00051\u0000\u0000\u1626"+
55552 		"\u1634\u0005\u012b\u0000\u0000\u1627\u1634\u0005/\u0000\u0000\u1628\u1634"+
55553 		"\u0005\u013b\u0000\u0000\u1629\u1634\u0005\u00e8\u0000\u0000\u162a\u1634"+
55554 		"\u0005.\u0000\u0000\u162b\u162c\u0005\u0133\u0000\u0000\u162c\u1634\u0005"+
55555 		"\u0134\u0000\u0000\u162d\u1634\u00050\u0000\u0000\u162e\u162f\u0005I\u0000"+
55556 		"\u0000\u162f\u1630\u0005\u013c\u0000\u0000\u1630\u1634\u0005\u013e\u0000"+
55557 		"\u0000\u1631\u1632\u0005I\u0000\u0000\u1632\u1634\u0005\u0135\u0000\u0000"+
55558 		"\u1633\u1623\u0001\u0000\u0000\u0000\u1633\u1624\u0001\u0000\u0000\u0000"+
55559 		"\u1633\u1625\u0001\u0000\u0000\u0000\u1633\u1626\u0001\u0000\u0000\u0000"+
55560 		"\u1633\u1627\u0001\u0000\u0000\u0000\u1633\u1628\u0001\u0000\u0000\u0000"+
55561 		"\u1633\u1629\u0001\u0000\u0000\u0000\u1633\u162a\u0001\u0000\u0000\u0000"+
55562 		"\u1633\u162b\u0001\u0000\u0000\u0000\u1633\u162d\u0001\u0000\u0000\u0000"+
55563 		"\u1633\u162e\u0001\u0000\u0000\u0000\u1633\u1631\u0001\u0000\u0000\u0000"+
55564 		"\u1634\u0321\u0001\u0000\u0000\u0000\u1635\u1636\u0005\u0150\u0000\u0000"+
55565 		"\u1636\u1637\u0005\u0151\u0000\u0000\u1637\u1683\u0005\u0152\u0000\u0000"+
55566 		"\u1638\u163e\u00053\u0000\u0000\u1639\u163f\u0005\u013f\u0000\u0000\u163a"+
55567 		"\u163f\u0005\u0140\u0000\u0000\u163b\u163f\u0005\u013d\u0000\u0000\u163c"+
55568 		"\u163d\u0005\u013a\u0000\u0000\u163d\u163f\u0005\u0141\u0000\u0000\u163e"+
55569 		"\u1639\u0001\u0000\u0000\u0000\u163e\u163a\u0001\u0000\u0000\u0000\u163e"+
55570 		"\u163b\u0001\u0000\u0000\u0000\u163e\u163c\u0001\u0000\u0000\u0000\u163f"+
55571 		"\u1683\u0001\u0000\u0000\u0000\u1640\u1641\u00053\u0000\u0000\u1641\u1653"+
55572 		"\u0005q\u0000\u0000\u1642\u1643\u0005\u0142\u0000\u0000\u1643\u1654\u0005"+
55573 		"t\u0000\u0000\u1644\u1654\u0005\u012f\u0000\u0000\u1645\u1654\u0005\u0143"+
55574 		"\u0000\u0000\u1646\u1654\u0005\u00ca\u0000\u0000\u1647\u1654\u0005\u0144"+
55575 		"\u0000\u0000\u1648\u1649\u0005\u0145\u0000\u0000\u1649\u1654\u0005\u0146"+
55576 		"\u0000\u0000\u164a\u164b\u0005\u0145\u0000\u0000\u164b\u1654\u0005\u012d"+
55577 		"\u0000\u0000\u164c\u164d\u0005\u0147\u0000\u0000\u164d\u1654\u0005\u013a"+
55578 		"\u0000\u0000\u164e\u1654\u0005\u010e\u0000\u0000\u164f\u1650\u0005\u013a"+
55579 		"\u0000\u0000\u1650\u1654\u0005\u0148\u0000\u0000\u1651\u1652\u0005\u013a"+
55580 		"\u0000\u0000\u1652\u1654\u0005\u00ea\u0000\u0000\u1653\u1642\u0001\u0000"+
55581 		"\u0000\u0000\u1653\u1644\u0001\u0000\u0000\u0000\u1653\u1645\u0001\u0000"+
55582 		"\u0000\u0000\u1653\u1646\u0001\u0000\u0000\u0000\u1653\u1647\u0001\u0000"+
55583 		"\u0000\u0000\u1653\u1648\u0001\u0000\u0000\u0000\u1653\u164a\u0001\u0000"+
55584 		"\u0000\u0000\u1653\u164c\u0001\u0000\u0000\u0000\u1653\u164e\u0001\u0000"+
55585 		"\u0000\u0000\u1653\u164f\u0001\u0000\u0000\u0000\u1653\u1651\u0001\u0000"+
55586 		"\u0000\u0000\u1654\u1683\u0001\u0000\u0000\u0000\u1655\u1656\u0005\u014d"+
55587 		"\u0000\u0000\u1656\u1683\u0005\u013a\u0000\u0000\u1657\u1658\u0005\u012e"+
55588 		"\u0000\u0000\u1658\u1659\u0005q\u0000\u0000\u1659\u1683\u0005\u00ca\u0000"+
55589 		"\u0000\u165a\u165b\u0005\u012e\u0000\u0000\u165b\u1683\u0005\u00a2\u0000"+
55590 		"\u0000\u165c\u165d\u0005\u0131\u0000\u0000\u165d\u1683\u0005\u013a\u0000"+
55591 		"\u0000\u165e\u165f\u00052\u0000\u0000\u165f\u1660\u0005q\u0000\u0000\u1660"+
55592 		"\u1683\u0005\u00ca\u0000\u0000\u1661\u166d\u00052\u0000\u0000\u1662\u1663"+
55593 		"\u0005\u0142\u0000\u0000\u1663\u166e\u0005t\u0000\u0000\u1664\u1665\u0005"+
55594 		"\u0149\u0000\u0000\u1665\u1666\u0005\u0145\u0000\u0000\u1666\u166e\u0005"+
55595 		"\u0146\u0000\u0000\u1667\u166e\u0005\u0144\u0000\u0000\u1668\u1669\u0005"+
55596 		"\u013a\u0000\u0000\u1669\u166e\u0005\u00ea\u0000\u0000\u166a\u166b\u0005"+
55597 		"\u013d\u0000\u0000\u166b\u166c\u0005\u0145\u0000\u0000\u166c\u166e\u0005"+
55598 		"\u0146\u0000\u0000\u166d\u1662\u0001\u0000\u0000\u0000\u166d\u1664\u0001"+
55599 		"\u0000\u0000\u0000\u166d\u1667\u0001\u0000\u0000\u0000\u166d\u1668\u0001"+
55600 		"\u0000\u0000\u0000\u166d\u166a\u0001\u0000\u0000\u0000\u166e\u1683\u0001"+
55601 		"\u0000\u0000\u0000\u166f\u1670\u0005\u014e\u0000\u0000\u1670\u1671\u0005"+
55602 		"\u014f\u0000\u0000\u1671\u1683\u0005\u0137\u0000\u0000\u1672\u1673\u0005"+
55603 		"\u014b\u0000\u0000\u1673\u1674\u0005q\u0000\u0000\u1674\u1683\u0005\u010e"+
55604 		"\u0000\u0000\u1675\u1676\u0005.\u0000\u0000\u1676\u1677\u0005p\u0000\u0000"+
55605 		"\u1677\u1678\u0005\u00e9\u0000\u0000\u1678\u1683\u0005\u014c\u0000\u0000"+
55606 		"\u1679\u1683\u0005\u0154\u0000\u0000\u167a\u167b\u0005\u0153\u0000\u0000"+
55607 		"\u167b\u1683\u0005\u0137\u0000\u0000\u167c\u167d\u0005I\u0000\u0000\u167d"+
55608 		"\u167e\u0005q\u0000\u0000\u167e\u1683\u0007R\u0000\u0000\u167f\u1680\u0005"+
55609 		"I\u0000\u0000\u1680\u1681\u0005\u013a\u0000\u0000\u1681\u1683\u0005\u0141"+
55610 		"\u0000\u0000\u1682\u1635\u0001\u0000\u0000\u0000\u1682\u1638\u0001\u0000"+
55611 		"\u0000\u0000\u1682\u1640\u0001\u0000\u0000\u0000\u1682\u1655\u0001\u0000"+
55612 		"\u0000\u0000\u1682\u1657\u0001\u0000\u0000\u0000\u1682\u165a\u0001\u0000"+
55613 		"\u0000\u0000\u1682\u165c\u0001\u0000\u0000\u0000\u1682\u165e\u0001\u0000"+
55614 		"\u0000\u0000\u1682\u1661\u0001\u0000\u0000\u0000\u1682\u166f\u0001\u0000"+
55615 		"\u0000\u0000\u1682\u1672\u0001\u0000\u0000\u0000\u1682\u1675\u0001\u0000"+
55616 		"\u0000\u0000\u1682\u1679\u0001\u0000\u0000\u0000\u1682\u167a\u0001\u0000"+
55617 		"\u0000\u0000\u1682\u167c\u0001\u0000\u0000\u0000\u1682\u167f\u0001\u0000"+
55618 		"\u0000\u0000\u1683\u0323\u0001\u0000\u0000\u0000\u1684\u1686\u0005\u0131"+
55619 		"\u0000\u0000\u1685\u1687\u0005\u013a\u0000\u0000\u1686\u1685\u0001\u0000"+
55620 		"\u0000\u0000\u1686\u1687\u0001\u0000\u0000\u0000\u1687\u1697\u0001\u0000"+
55621 		"\u0000\u0000\u1688\u1697\u0005\u014b\u0000\u0000\u1689\u168b\u0005I\u0000"+
55622 		"\u0000\u168a\u168c\u0005q\u0000\u0000\u168b\u168a\u0001\u0000\u0000\u0000"+
55623 		"\u168b\u168c\u0001\u0000\u0000\u0000\u168c\u168d\u0001\u0000\u0000\u0000"+
55624 		"\u168d\u1697\u0005\u0135\u0000\u0000\u168e\u1697\u00053\u0000\u0000\u168f"+
55625 		"\u1690\u00053\u0000\u0000\u1690\u1694\u0005q\u0000\u0000\u1691\u1695\u0005"+
55626 		"\u010e\u0000\u0000\u1692\u1693\u0005\u013a\u0000\u0000\u1693\u1695\u0005"+
55627 		"\u00ea\u0000\u0000\u1694\u1691\u0001\u0000\u0000\u0000\u1694\u1692\u0001"+
55628 		"\u0000\u0000\u0000\u1695\u1697\u0001\u0000\u0000\u0000\u1696\u1684\u0001"+
55629 		"\u0000\u0000\u0000\u1696\u1688\u0001\u0000\u0000\u0000\u1696\u1689\u0001"+
55630 		"\u0000\u0000\u0000\u1696\u168e\u0001\u0000\u0000\u0000\u1696\u168f\u0001"+
55631 		"\u0000\u0000\u0000\u1697\u0325\u0001\u0000\u0000\u0000\u1698\u1699\u0005"+
55632 		"\u0150\u0000\u0000\u1699\u169a\u0005\u00ca\u0000\u0000\u169a\u169b\u0005"+
55633 		"\u0151\u0000\u0000\u169b\u1740\u0005\u0152\u0000\u0000\u169c\u1740\u0005"+
55634 		"3\u0000\u0000\u169d\u169e\u00053\u0000\u0000\u169e\u1740\u0005\u013d\u0000"+
55635 		"\u0000\u169f\u16a0\u00053\u0000\u0000\u16a0\u16da\u0005q\u0000\u0000\u16a1"+
55636 		"\u16a2\u0005\u0136\u0000\u0000\u16a2\u16db\u0005\u00ea\u0000\u0000\u16a3"+
55637 		"\u16db\u0005\u0137\u0000\u0000\u16a4\u16a9\u0005\u0138\u0000\u0000\u16a5"+
55638 		"\u16a9\u0005\u0139\u0000\u0000\u16a6\u16a7\u0005<\u0000\u0000\u16a7\u16a9"+
55639 		"\u0005\u015b\u0000\u0000\u16a8\u16a4\u0001\u0000\u0000\u0000\u16a8\u16a5"+
55640 		"\u0001\u0000\u0000\u0000\u16a8\u16a6\u0001\u0000\u0000\u0000\u16a9\u16aa"+
55641 		"\u0001\u0000\u0000\u0000\u16aa\u16db\u0005B\u0000\u0000\u16ab\u16db\u0005"+
55642 		"\u0159\u0000\u0000\u16ac\u16db\u0005\u012f\u0000\u0000\u16ad\u16ae\u0005"+
55643 		"<\u0000\u0000\u16ae\u16af\u0005\u015c\u0000\u0000\u16af\u16b0\u0005B\u0000"+
55644 		"\u0000\u16b0\u16db\u0005\u0135\u0000\u0000\u16b1\u16db\u0005\u015a\u0000"+
55645 		"\u0000\u16b2\u16bc\u0005\u00ca\u0000\u0000\u16b3\u16bd\u0005\u0148\u0000"+
55646 		"\u0000\u16b4\u16b5\u0005\u0149\u0000\u0000\u16b5\u16bd\u0005F\u0000\u0000"+
55647 		"\u16b6\u16b7\u0005\u0145\u0000\u0000\u16b7\u16bd\u0005\u0146\u0000\u0000"+
55648 		"\u16b8\u16b9\u0005\u0145\u0000\u0000\u16b9\u16bd\u0005\u012d\u0000\u0000"+
55649 		"\u16ba\u16bb\u0005\u0155\u0000\u0000\u16bb\u16bd\u0005\u0156\u0000\u0000"+
55650 		"\u16bc\u16b3\u0001\u0000\u0000\u0000\u16bc\u16b4\u0001\u0000\u0000\u0000"+
55651 		"\u16bc\u16b6\u0001\u0000\u0000\u0000\u16bc\u16b8\u0001\u0000\u0000\u0000"+
55652 		"\u16bc\u16ba\u0001\u0000\u0000\u0000\u16bc\u16bd\u0001\u0000\u0000\u0000"+
55653 		"\u16bd\u16db\u0001\u0000\u0000\u0000\u16be\u16db\u0005\u0157\u0000\u0000"+
55654 		"\u16bf\u16c0\u0005\u0145\u0000\u0000\u16c0\u16db\u0007S\u0000\u0000\u16c1"+
55655 		"\u16c7\u0005\u014e\u0000\u0000\u16c2\u16c3\u0005\u015d\u0000\u0000\u16c3"+
55656 		"\u16c8\u0005\u015e\u0000\u0000\u16c4\u16c5\u0005\u015f\u0000\u0000\u16c5"+
55657 		"\u16c8\u0005\u0160\u0000\u0000\u16c6\u16c8\u0005\u0161\u0000\u0000\u16c7"+
55658 		"\u16c2\u0001\u0000\u0000\u0000\u16c7\u16c4\u0001\u0000\u0000\u0000\u16c7"+
55659 		"\u16c6\u0001\u0000\u0000\u0000\u16c8\u16db\u0001\u0000\u0000\u0000\u16c9"+
55660 		"\u16ca\u0005\u0162\u0000\u0000\u16ca\u16db\u0005\u0130\u0000\u0000\u16cb"+
55661 		"\u16db\u0005\u0163\u0000\u0000\u16cc\u16cd\u0005\u0165\u0000\u0000\u16cd"+
55662 		"\u16db\u0005\u00ae\u0000\u0000\u16ce\u16cf\u0005\u0166\u0000\u0000\u16cf"+
55663 		"\u16d0\u0005\u0158\u0000\u0000\u16d0\u16db\u0005\u0167\u0000\u0000\u16d1"+
55664 		"\u16db\u0005\u00ea\u0000\u0000\u16d2\u16db\u0005\u0168\u0000\u0000\u16d3"+
55665 		"\u16d4\u0005\u013a\u0000\u0000\u16d4\u16db\u0005\u0148\u0000\u0000\u16d5"+
55666 		"\u16db\u00056\u0000\u0000\u16d6\u16d7\u0005\u0169\u0000\u0000\u16d7\u16db"+
55667 		"\u0005\u016a\u0000\u0000\u16d8\u16db\u0005\u0158\u0000\u0000\u16d9\u16db"+
55668 		"\u0005\u00e9\u0000\u0000\u16da\u16a1\u0001\u0000\u0000\u0000\u16da\u16a3"+
55669 		"\u0001\u0000\u0000\u0000\u16da\u16a8\u0001\u0000\u0000\u0000\u16da\u16ab"+
55670 		"\u0001\u0000\u0000\u0000\u16da\u16ac\u0001\u0000\u0000\u0000\u16da\u16ad"+
55671 		"\u0001\u0000\u0000\u0000\u16da\u16b1\u0001\u0000\u0000\u0000\u16da\u16b2"+
55672 		"\u0001\u0000\u0000\u0000\u16da\u16be\u0001\u0000\u0000\u0000\u16da\u16bf"+
55673 		"\u0001\u0000\u0000\u0000\u16da\u16c1\u0001\u0000\u0000\u0000\u16da\u16c9"+
55674 		"\u0001\u0000\u0000\u0000\u16da\u16cb\u0001\u0000\u0000\u0000\u16da\u16cc"+
55675 		"\u0001\u0000\u0000\u0000\u16da\u16ce\u0001\u0000\u0000\u0000\u16da\u16d1"+
55676 		"\u0001\u0000\u0000\u0000\u16da\u16d2\u0001\u0000\u0000\u0000\u16da\u16d3"+
55677 		"\u0001\u0000\u0000\u0000\u16da\u16d5\u0001\u0000\u0000\u0000\u16da\u16d6"+
55678 		"\u0001\u0000\u0000\u0000\u16da\u16d8\u0001\u0000\u0000\u0000\u16da\u16d9"+
55679 		"\u0001\u0000\u0000\u0000\u16db\u1740\u0001\u0000\u0000\u0000\u16dc\u16de"+
55680 		"\u0005\u014d\u0000\u0000\u16dd\u16df\u0005\u013a\u0000\u0000\u16de\u16dd"+
55681 		"\u0001\u0000\u0000\u0000\u16de\u16df\u0001\u0000\u0000\u0000\u16df\u1740"+
55682 		"\u0001\u0000\u0000\u0000\u16e0\u16e1\u0005\u0172\u0000\u0000\u16e1\u1740"+
55683 		"\u0007T\u0000\u0000\u16e2\u1740\u0005\u0178\u0000\u0000\u16e3\u1740\u0005"+
55684 		"\u012e\u0000\u0000\u16e4\u16e6\u0005\u012e\u0000\u0000\u16e5\u16e7\u0005"+
55685 		"\u0121\u0000\u0000\u16e6\u16e5\u0001\u0000\u0000\u0000\u16e6\u16e7\u0001"+
55686 		"\u0000\u0000\u0000\u16e7\u1740\u0001\u0000\u0000\u0000\u16e8\u16ea\u0005"+
55687 		"\u0131\u0000\u0000\u16e9\u16eb\u0005\u013a\u0000\u0000\u16ea\u16e9\u0001"+
55688 		"\u0000\u0000\u0000\u16ea\u16eb\u0001\u0000\u0000\u0000\u16eb\u1740\u0001"+
55689 		"\u0000\u0000\u0000\u16ec\u1711\u00052\u0000\u0000\u16ed\u1712\u0005\u016b"+
55690 		"\u0000\u0000\u16ee\u1712\u0005\u0137\u0000\u0000\u16ef\u16f0\u0007U\u0000"+
55691 		"\u0000\u16f0\u1712\u0005B\u0000\u0000\u16f1\u1712\u0005\u0159\u0000\u0000"+
55692 		"\u16f2\u1712\u0005\u015a\u0000\u0000\u16f3\u1712\u0005\u00ca\u0000\u0000"+
55693 		"\u16f4\u16f6\u0005\u00ca\u0000\u0000\u16f5\u16f4\u0001\u0000\u0000\u0000"+
55694 		"\u16f5\u16f6\u0001\u0000\u0000\u0000\u16f6\u16f7\u0001\u0000\u0000\u0000"+
55695 		"\u16f7\u16f8\u0005\u0149\u0000\u0000\u16f8\u16f9\u0005\u0145\u0000\u0000"+
55696 		"\u16f9\u1712\u0005\u0146\u0000\u0000\u16fa\u1712\u0005\u0098\u0000\u0000"+
55697 		"\u16fb\u16fc\u0005\u0162\u0000\u0000\u16fc\u1712\u0005\u0130\u0000\u0000"+
55698 		"\u16fd\u1712\u0005E\u0000\u0000\u16fe\u16ff\u0005\u0165\u0000\u0000\u16ff"+
55699 		"\u1712\u0005\u00ae\u0000\u0000\u1700\u1712\u0005G\u0000\u0000\u1701\u1712"+
55700 		"\u0005\u016c\u0000\u0000\u1702\u1703\u0005\u0166\u0000\u0000\u1703\u1704"+
55701 		"\u0005\u0158\u0000\u0000\u1704\u1712\u0005\u0167\u0000\u0000\u1705\u1712"+
55702 		"\u0005\u00ea\u0000\u0000\u1706\u1712\u0005\u0168\u0000\u0000\u1707\u1712"+
55703 		"\u0005\u016d\u0000\u0000\u1708\u1712\u00056\u0000\u0000\u1709\u1712\u0005"+
55704 		"\u0158\u0000\u0000\u170a\u1712\u0005\u016e\u0000\u0000\u170b\u1712\u0005"+
55705 		";\u0000\u0000\u170c\u1712\u0005\u00ae\u0000\u0000\u170d\u1712\u0005I\u0000"+
55706 		"\u0000\u170e\u170f\u0005\u014a\u0000\u0000\u170f\u1710\u00056\u0000\u0000"+
55707 		"\u1710\u1712\u0005\u016f\u0000\u0000\u1711\u16ed\u0001\u0000\u0000\u0000"+
55708 		"\u1711\u16ee\u0001\u0000\u0000\u0000\u1711\u16ef\u0001\u0000\u0000\u0000"+
55709 		"\u1711\u16f1\u0001\u0000\u0000\u0000\u1711\u16f2\u0001\u0000\u0000\u0000"+
55710 		"\u1711\u16f3\u0001\u0000\u0000\u0000\u1711\u16f5\u0001\u0000\u0000\u0000"+
55711 		"\u1711\u16fa\u0001\u0000\u0000\u0000\u1711\u16fb\u0001\u0000\u0000\u0000"+
55712 		"\u1711\u16fd\u0001\u0000\u0000\u0000\u1711\u16fe\u0001\u0000\u0000\u0000"+
55713 		"\u1711\u1700\u0001\u0000\u0000\u0000\u1711\u1701\u0001\u0000\u0000\u0000"+
55714 		"\u1711\u1702\u0001\u0000\u0000\u0000\u1711\u1705\u0001\u0000\u0000\u0000"+
55715 		"\u1711\u1706\u0001\u0000\u0000\u0000\u1711\u1707\u0001\u0000\u0000\u0000"+
55716 		"\u1711\u1708\u0001\u0000\u0000\u0000\u1711\u1709\u0001\u0000\u0000\u0000"+
55717 		"\u1711\u170a\u0001\u0000\u0000\u0000\u1711\u170b\u0001\u0000\u0000\u0000"+
55718 		"\u1711\u170c\u0001\u0000\u0000\u0000\u1711\u170d\u0001\u0000\u0000\u0000"+
55719 		"\u1711\u170e\u0001\u0000\u0000\u0000\u1712\u1740\u0001\u0000\u0000\u0000"+
55720 		"\u1713\u1740\u00051\u0000\u0000\u1714\u1740\u0005\u012b\u0000\u0000\u1715"+
55721 		"\u1717\u0005\u012b\u0000\u0000\u1716\u1718\u0005q\u0000\u0000\u1717\u1716"+
55722 		"\u0001\u0000\u0000\u0000\u1717\u1718\u0001\u0000\u0000\u0000\u1718\u1719"+
55723 		"\u0001\u0000\u0000\u0000\u1719\u171a\u0005\u014e\u0000\u0000\u171a\u1740"+
55724 		"\u0005\u0170\u0000\u0000\u171b\u1740\u0005/\u0000\u0000\u171c\u171d\u0005"+
55725 		"\u0171\u0000\u0000\u171d\u171e\u0005\u00ca\u0000\u0000\u171e\u1740\u0005"+
55726 		"\u012f\u0000\u0000\u171f\u1740\u0005\u00e8\u0000\u0000\u1720\u1740\u0005"+
55727 		".\u0000\u0000\u1721\u1740\u0005\u0174\u0000\u0000\u1722\u1723\u0005\u0175"+
55728 		"\u0000\u0000\u1723\u1724\u0005\u0176\u0000\u0000\u1724\u1740\u0005\u0177"+
55729 		"\u0000\u0000\u1725\u1726\u0005\u0133\u0000\u0000\u1726\u1740\u0005\u0134"+
55730 		"\u0000\u0000\u1727\u1740\u0005\u0164\u0000\u0000\u1728\u1740\u00050\u0000"+
55731 		"\u0000\u1729\u172a\u0005I\u0000\u0000\u172a\u172b\u0005q\u0000\u0000\u172b"+
55732 		"\u172c\u0005<\u0000\u0000\u172c\u172d\u0007V\u0000\u0000\u172d\u172e\u0005"+
55733 		"B\u0000\u0000\u172e\u1740\u0005\u0135\u0000\u0000\u172f\u1730\u00052\u0000"+
55734 		"\u0000\u1730\u1734\u0005q\u0000\u0000\u1731\u1735\u0005\u00ca\u0000\u0000"+
55735 		"\u1732\u1733\u0005\u014e\u0000\u0000\u1733\u1735\u0005\u0161\u0000\u0000"+
55736 		"\u1734\u1731\u0001\u0000\u0000\u0000\u1734\u1732\u0001\u0000\u0000\u0000"+
55737 		"\u1735\u1740\u0001\u0000\u0000\u0000\u1736\u1737\u0005I\u0000\u0000\u1737"+
55738 		"\u1738\u0007W\u0000\u0000\u1738\u1740\u0005\u0141\u0000\u0000\u1739\u173b"+
55739 		"\u0005I\u0000\u0000\u173a\u173c\u0005q\u0000\u0000\u173b\u173a\u0001\u0000"+
55740 		"\u0000\u0000\u173b\u173c\u0001\u0000\u0000\u0000\u173c\u173d\u0001\u0000"+
55741 		"\u0000\u0000\u173d\u1740\u0005\u0135\u0000\u0000\u173e\u1740\u0001\u0000"+
55742 		"\u0000\u0000\u173f\u1698\u0001\u0000\u0000\u0000\u173f\u169c\u0001\u0000"+
55743 		"\u0000\u0000\u173f\u169d\u0001\u0000\u0000\u0000\u173f\u169f\u0001\u0000"+
55744 		"\u0000\u0000\u173f\u16dc\u0001\u0000\u0000\u0000\u173f\u16e0\u0001\u0000"+
55745 		"\u0000\u0000\u173f\u16e2\u0001\u0000\u0000\u0000\u173f\u16e3\u0001\u0000"+
55746 		"\u0000\u0000\u173f\u16e4\u0001\u0000\u0000\u0000\u173f\u16e8\u0001\u0000"+
55747 		"\u0000\u0000\u173f\u16ec\u0001\u0000\u0000\u0000\u173f\u1713\u0001\u0000"+
55748 		"\u0000\u0000\u173f\u1714\u0001\u0000\u0000\u0000\u173f\u1715\u0001\u0000"+
55749 		"\u0000\u0000\u173f\u171b\u0001\u0000\u0000\u0000\u173f\u171c\u0001\u0000"+
55750 		"\u0000\u0000\u173f\u171f\u0001\u0000\u0000\u0000\u173f\u1720\u0001\u0000"+
55751 		"\u0000\u0000\u173f\u1721\u0001\u0000\u0000\u0000\u173f\u1722\u0001\u0000"+
55752 		"\u0000\u0000\u173f\u1725\u0001\u0000\u0000\u0000\u173f\u1727\u0001\u0000"+
55753 		"\u0000\u0000\u173f\u1728\u0001\u0000\u0000\u0000\u173f\u1729\u0001\u0000"+
55754 		"\u0000\u0000\u173f\u172f\u0001\u0000\u0000\u0000\u173f\u1736\u0001\u0000"+
55755 		"\u0000\u0000\u173f\u1739\u0001\u0000\u0000\u0000\u173f\u173e\u0001\u0000"+
55756 		"\u0000\u0000\u1740\u0327\u0001\u0000\u0000\u0000\u1741\u1745\u0003\u032a"+
55757 		"\u0195\u0000\u1742\u1745\u0003\u032c\u0196\u0000\u1743\u1745\u0003\u032e"+
55758 		"\u0197\u0000\u1744\u1741\u0001\u0000\u0000\u0000\u1744\u1742\u0001\u0000"+
55759 		"\u0000\u0000\u1744\u1743\u0001\u0000\u0000\u0000\u1745\u0329\u0001\u0000"+
55760 		"\u0000\u0000\u1746\u174f\u0005\u0131\u0000\u0000\u1747\u174f\u0005\u014b"+
55761 		"\u0000\u0000\u1748\u174f\u00053\u0000\u0000\u1749\u174a\u0005I\u0000\u0000"+
55762 		"\u174a\u174f\u0005\u0135\u0000\u0000\u174b\u174c\u00053\u0000\u0000\u174c"+
55763 		"\u174d\u0005q\u0000\u0000\u174d\u174f\u0005\u00e9\u0000\u0000\u174e\u1746"+
55764 		"\u0001\u0000\u0000\u0000\u174e\u1747\u0001\u0000\u0000\u0000\u174e\u1748"+
55765 		"\u0001\u0000\u0000\u0000\u174e\u1749\u0001\u0000\u0000\u0000\u174e\u174b"+
55766 		"\u0001\u0000\u0000\u0000\u174f\u032b\u0001\u0000\u0000\u0000\u1750\u175a"+
55767 		"\u0005\u0131\u0000\u0000\u1751\u1752\u0005\u0133\u0000\u0000\u1752\u175a"+
55768 		"\u0005\u0134\u0000\u0000\u1753\u175a\u00053\u0000\u0000\u1754\u1755\u0005"+
55769 		"I\u0000\u0000\u1755\u175a\u0005\u0135\u0000\u0000\u1756\u1757\u00053\u0000"+
55770 		"\u0000\u1757\u1758\u0005q\u0000\u0000\u1758\u175a\u0005\u00ea\u0000\u0000"+
55771 		"\u1759\u1750\u0001\u0000\u0000\u0000\u1759\u1751\u0001\u0000\u0000\u0000"+
55772 		"\u1759\u1753\u0001\u0000\u0000\u0000\u1759\u1754\u0001\u0000\u0000\u0000"+
55773 		"\u1759\u1756\u0001\u0000\u0000\u0000\u175a\u032d\u0001\u0000\u0000\u0000"+
55774 		"\u175b\u1764\u0005\u0131\u0000\u0000\u175c\u1764\u00053\u0000\u0000\u175d"+
55775 		"\u175e\u0005I\u0000\u0000\u175e\u1764\u0005\u0135\u0000\u0000\u175f\u1760"+
55776 		"\u00053\u0000\u0000\u1760\u1761\u0005q\u0000\u0000\u1761\u1762\u0005\u0136"+
55777 		"\u0000\u0000\u1762\u1764\u0005\u00ea\u0000\u0000\u1763\u175b\u0001\u0000"+
55778 		"\u0000\u0000\u1763\u175c\u0001\u0000\u0000\u0000\u1763\u175d\u0001\u0000"+
55779 		"\u0000\u0000\u1763\u175f\u0001\u0000\u0000\u0000\u1764\u032f\u0001\u0000"+
55780 		"\u0000\u0000\u1765\u176d\u0005\u0131\u0000\u0000\u1766\u1767\u0005\u0133"+
55781 		"\u0000\u0000\u1767\u176d\u0005\u0134\u0000\u0000\u1768\u176d\u00053\u0000"+
55782 		"\u0000\u1769\u176d\u0005\u00e8\u0000\u0000\u176a\u176b\u0005I\u0000\u0000"+
55783 		"\u176b\u176d\u0005\u0135\u0000\u0000\u176c\u1765\u0001\u0000\u0000\u0000"+
55784 		"\u176c\u1766\u0001\u0000\u0000\u0000\u176c\u1768\u0001\u0000\u0000\u0000"+
55785 		"\u176c\u1769\u0001\u0000\u0000\u0000\u176c\u176a\u0001\u0000\u0000\u0000"+
55786 		"\u176d\u0331\u0001\u0000\u0000\u0000\u176e\u1783\u00053\u0000\u0000\u176f"+
55787 		"\u1783\u0005\u0131\u0000\u0000\u1770\u1771\u00052\u0000\u0000\u1771\u1783"+
55788 		"\u0005\u0179\u0000\u0000\u1772\u1783\u00051\u0000\u0000\u1773\u1783\u0005"+
55789 		"\u012b\u0000\u0000\u1774\u1783\u0005/\u0000\u0000\u1775\u1783\u0005\u00e8"+
55790 		"\u0000\u0000\u1776\u1783\u0005.\u0000\u0000\u1777\u1778\u0005\u0133\u0000"+
55791 		"\u0000\u1778\u1783\u0005\u0134\u0000\u0000\u1779\u1783\u00050\u0000\u0000"+
55792 		"\u177a\u177b\u0005I\u0000\u0000\u177b\u177c\u0005\u013c\u0000\u0000\u177c"+
55793 		"\u1783\u0005\u013e\u0000\u0000\u177d\u177e\u0005I\u0000\u0000\u177e\u1783"+
55794 		"\u0005\u0135\u0000\u0000\u177f\u1780\u00053\u0000\u0000\u1780\u1781\u0005"+
55795 		"q\u0000\u0000\u1781\u1783\u00056\u0000\u0000\u1782\u176e\u0001\u0000\u0000"+
55796 		"\u0000\u1782\u176f\u0001\u0000\u0000\u0000\u1782\u1770\u0001\u0000\u0000"+
55797 		"\u0000\u1782\u1772\u0001\u0000\u0000\u0000\u1782\u1773\u0001\u0000\u0000"+
55798 		"\u0000\u1782\u1774\u0001\u0000\u0000\u0000\u1782\u1775\u0001\u0000\u0000"+
55799 		"\u0000\u1782\u1776\u0001\u0000\u0000\u0000\u1782\u1777\u0001\u0000\u0000"+
55800 		"\u0000\u1782\u1779\u0001\u0000\u0000\u0000\u1782\u177a\u0001\u0000\u0000"+
55801 		"\u0000\u1782\u177d\u0001\u0000\u0000\u0000\u1782\u177f\u0001\u0000\u0000"+
55802 		"\u0000\u1783\u0333\u0001\u0000\u0000\u0000\u1784\u1790\u00053\u0000\u0000"+
55803 		"\u1785\u1790\u0005\u0131\u0000\u0000\u1786\u1790\u0005\u00e8\u0000\u0000"+
55804 		"\u1787\u1788\u0005\u0133\u0000\u0000\u1788\u1790\u0005\u0134\u0000\u0000"+
55805 		"\u1789\u178a\u0005I\u0000\u0000\u178a\u1790\u0005\u0135\u0000\u0000\u178b"+
55806 		"\u178c\u00053\u0000\u0000\u178c\u178d\u0005q\u0000\u0000\u178d\u178e\u0005"+
55807 		"\u0162\u0000\u0000\u178e\u1790\u0005\u0130\u0000\u0000\u178f\u1784\u0001"+
55808 		"\u0000\u0000\u0000\u178f\u1785\u0001\u0000\u0000\u0000\u178f\u1786\u0001"+
55809 		"\u0000\u0000\u0000\u178f\u1787\u0001\u0000\u0000\u0000\u178f\u1789\u0001"+
55810 		"\u0000\u0000\u0000\u178f\u178b\u0001\u0000\u0000\u0000\u1790\u0335\u0001"+
55811 		"\u0000\u0000\u0000\u1791\u1797\u0003\u0338\u019c\u0000\u1792\u1797\u0003"+
55812 		"\u033a\u019d\u0000\u1793\u1797\u0003\u033c\u019e\u0000\u1794\u1797\u0003"+
55813 		"\u033e\u019f\u0000\u1795\u1797\u0003\u0340\u01a0\u0000\u1796\u1791\u0001"+
55814 		"\u0000\u0000\u0000\u1796\u1792\u0001\u0000\u0000\u0000\u1796\u1793\u0001"+
55815 		"\u0000\u0000\u0000\u1796\u1794\u0001\u0000\u0000\u0000\u1796\u1795\u0001"+
55816 		"\u0000\u0000\u0000\u1797\u0337\u0001\u0000\u0000\u0000\u1798\u17a3\u0005"+
55817 		"\u0131\u0000\u0000\u1799\u179a\u0005\u0133\u0000\u0000\u179a\u17a3\u0005"+
55818 		"\u0134\u0000\u0000\u179b\u17a3\u00053\u0000\u0000\u179c\u17a3\u0005\u00e8"+
55819 		"\u0000\u0000\u179d\u179e\u0005I\u0000\u0000\u179e\u17a3\u0005\u0135\u0000"+
55820 		"\u0000\u179f\u17a0\u00053\u0000\u0000\u17a0\u17a1\u0005q\u0000\u0000\u17a1"+
55821 		"\u17a3\u0005\u015a\u0000\u0000\u17a2\u1798\u0001\u0000\u0000\u0000\u17a2"+
55822 		"\u1799\u0001\u0000\u0000\u0000\u17a2\u179b\u0001\u0000\u0000\u0000\u17a2"+
55823 		"\u179c\u0001\u0000\u0000\u0000\u17a2\u179d\u0001\u0000\u0000\u0000\u17a2"+
55824 		"\u179f\u0001\u0000\u0000\u0000\u17a3\u0339\u0001\u0000\u0000\u0000\u17a4"+
55825 		"\u17b0\u0005\u0131\u0000\u0000\u17a5\u17a6\u0005\u0133\u0000\u0000\u17a6"+
55826 		"\u17b0\u0005\u0134\u0000\u0000\u17a7\u17b0\u00053\u0000\u0000\u17a8\u17b0"+
55827 		"\u0005\u00e8\u0000\u0000\u17a9\u17aa\u0005I\u0000\u0000\u17aa\u17b0\u0005"+
55828 		"\u0135\u0000\u0000\u17ab\u17ac\u00053\u0000\u0000\u17ac\u17ad\u0005q\u0000"+
55829 		"\u0000\u17ad\u17ae\u0005\u0165\u0000\u0000\u17ae\u17b0\u0005\u00ae\u0000"+
55830 		"\u0000\u17af\u17a4\u0001\u0000\u0000\u0000\u17af\u17a5\u0001\u0000\u0000"+
55831 		"\u0000\u17af\u17a7\u0001\u0000\u0000\u0000\u17af\u17a8\u0001\u0000\u0000"+
55832 		"\u0000\u17af\u17a9\u0001\u0000\u0000\u0000\u17af\u17ab\u0001\u0000\u0000"+
55833 		"\u0000\u17b0\u033b\u0001\u0000\u0000\u0000\u17b1\u17bd\u0005\u0131\u0000"+
55834 		"\u0000\u17b2\u17b3\u0005\u0133\u0000\u0000\u17b3\u17bd\u0005\u0134\u0000"+
55835 		"\u0000\u17b4\u17bd\u00053\u0000\u0000\u17b5\u17b6\u0005I\u0000\u0000\u17b6"+
55836 		"\u17bd\u0005\u0135\u0000\u0000\u17b7\u17b8\u00053\u0000\u0000\u17b8\u17b9"+
55837 		"\u0005q\u0000\u0000\u17b9\u17ba\u0005\u0166\u0000\u0000\u17ba\u17bb\u0005"+
55838 		"\u0158\u0000\u0000\u17bb\u17bd\u0005\u0167\u0000\u0000\u17bc\u17b1\u0001"+
55839 		"\u0000\u0000\u0000\u17bc\u17b2\u0001\u0000\u0000\u0000\u17bc\u17b4\u0001"+
55840 		"\u0000\u0000\u0000\u17bc\u17b5\u0001\u0000\u0000\u0000\u17bc\u17b7\u0001"+
55841 		"\u0000\u0000\u0000\u17bd\u033d\u0001\u0000\u0000\u0000\u17be\u17c8\u0005"+
55842 		"\u0131\u0000\u0000\u17bf\u17c0\u0005\u0133\u0000\u0000\u17c0\u17c8\u0005"+
55843 		"\u0134\u0000\u0000\u17c1\u17c8\u00053\u0000\u0000\u17c2\u17c3\u0005I\u0000"+
55844 		"\u0000\u17c3\u17c8\u0005\u0135\u0000\u0000\u17c4\u17c5\u00053\u0000\u0000"+
55845 		"\u17c5\u17c6\u0005q\u0000\u0000\u17c6\u17c8\u0005\u0168\u0000\u0000\u17c7"+
55846 		"\u17be\u0001\u0000\u0000\u0000\u17c7\u17bf\u0001\u0000\u0000\u0000\u17c7"+
55847 		"\u17c1\u0001\u0000\u0000\u0000\u17c7\u17c2\u0001\u0000\u0000\u0000\u17c7"+
55848 		"\u17c4\u0001\u0000\u0000\u0000\u17c8\u033f\u0001\u0000\u0000\u0000\u17c9"+
55849 		"\u17d4\u0005\u0131\u0000\u0000\u17ca\u17cb\u0005\u0133\u0000\u0000\u17cb"+
55850 		"\u17d4\u0005\u0134\u0000\u0000\u17cc\u17d4\u0005\u0292\u0000\u0000\u17cd"+
55851 		"\u17d4\u00053\u0000\u0000\u17ce\u17cf\u0005I\u0000\u0000\u17cf\u17d4\u0005"+
55852 		"\u0135\u0000\u0000\u17d0\u17d1\u00053\u0000\u0000\u17d1\u17d2\u0005q\u0000"+
55853 		"\u0000\u17d2\u17d4\u0005\u0158\u0000\u0000\u17d3\u17c9\u0001\u0000\u0000"+
55854 		"\u0000\u17d3\u17ca\u0001\u0000\u0000\u0000\u17d3\u17cc\u0001\u0000\u0000"+
55855 		"\u0000\u17d3\u17cd\u0001\u0000\u0000\u0000\u17d3\u17ce\u0001\u0000\u0000"+
55856 		"\u0000\u17d3\u17d0\u0001\u0000\u0000\u0000\u17d4\u0341\u0001\u0000\u0000"+
55857 		"\u0000\u17d5\u17e6\u00053\u0000\u0000\u17d6\u17e6\u0005\u012e\u0000\u0000"+
55858 		"\u17d7\u17d9\u0005\u0131\u0000\u0000\u17d8\u17da\u0005\u013a\u0000\u0000"+
55859 		"\u17d9\u17d8\u0001\u0000\u0000\u0000\u17d9\u17da\u0001\u0000\u0000\u0000"+
55860 		"\u17da\u17e6\u0001\u0000\u0000\u0000\u17db\u17dc\u0005\u0133\u0000\u0000"+
55861 		"\u17dc\u17e6\u0005\u0134\u0000\u0000\u17dd\u17df\u0005I\u0000\u0000\u17de"+
55862 		"\u17e0\u0005q\u0000\u0000\u17df\u17de\u0001\u0000\u0000\u0000\u17df\u17e0"+
55863 		"\u0001\u0000\u0000\u0000\u17e0\u17e1\u0001\u0000\u0000\u0000\u17e1\u17e6"+
55864 		"\u0005\u0135\u0000\u0000\u17e2\u17e3\u00053\u0000\u0000\u17e3\u17e4\u0005"+
55865 		"q\u0000\u0000\u17e4\u17e6\u0005\u0144\u0000\u0000\u17e5\u17d5\u0001\u0000"+
55866 		"\u0000\u0000\u17e5\u17d6\u0001\u0000\u0000\u0000\u17e5\u17d7\u0001\u0000"+
55867 		"\u0000\u0000\u17e5\u17db\u0001\u0000\u0000\u0000\u17e5\u17dd\u0001\u0000"+
55868 		"\u0000\u0000\u17e5\u17e2\u0001\u0000\u0000\u0000\u17e6\u0343\u0001\u0000"+
55869 		"\u0000\u0000\u17e7\u17f2\u0005\u0131\u0000\u0000\u17e8\u17e9\u0005\u0133"+
55870 		"\u0000\u0000\u17e9\u17f2\u0005\u0134\u0000\u0000\u17ea\u17f2\u00053\u0000"+
55871 		"\u0000\u17eb\u17f2\u0005\u00e8\u0000\u0000\u17ec\u17ed\u0005I\u0000\u0000"+
55872 		"\u17ed\u17f2\u0005\u0135\u0000\u0000\u17ee\u17ef\u00053\u0000\u0000\u17ef"+
55873 		"\u17f0\u0005q\u0000\u0000\u17f0\u17f2\u0005\u0159\u0000\u0000\u17f1\u17e7"+
55874 		"\u0001\u0000\u0000\u0000\u17f1\u17e8\u0001\u0000\u0000\u0000\u17f1\u17ea"+
55875 		"\u0001\u0000\u0000\u0000\u17f1\u17eb\u0001\u0000\u0000\u0000\u17f1\u17ec"+
55876 		"\u0001\u0000\u0000\u0000\u17f1\u17ee\u0001\u0000\u0000\u0000\u17f2\u0345"+
55877 		"\u0001\u0000\u0000\u0000\u17f3\u17ff\u00053\u0000\u0000\u17f4\u17ff\u0005"+
55878 		"\u0131\u0000\u0000\u17f5\u17ff\u0005\u00e8\u0000\u0000\u17f6\u17f7\u0005"+
55879 		"\u0133\u0000\u0000\u17f7\u17ff\u0005\u0134\u0000\u0000\u17f8\u17f9\u0005"+
55880 		"I\u0000\u0000\u17f9\u17ff\u0005\u0135\u0000\u0000\u17fa\u17fb\u00053\u0000"+
55881 		"\u0000\u17fb\u17fc\u0005q\u0000\u0000\u17fc\u17fd\u0005\u0138\u0000\u0000"+
55882 		"\u17fd\u17ff\u0005B\u0000\u0000\u17fe\u17f3\u0001\u0000\u0000\u0000\u17fe"+
55883 		"\u17f4\u0001\u0000\u0000\u0000\u17fe\u17f5\u0001\u0000\u0000\u0000\u17fe"+
55884 		"\u17f6\u0001\u0000\u0000\u0000\u17fe\u17f8\u0001\u0000\u0000\u0000\u17fe"+
55885 		"\u17fa\u0001\u0000\u0000\u0000\u17ff\u0347\u0001\u0000\u0000\u0000\u1800"+
55886 		"\u180c\u0005\u0131\u0000\u0000\u1801\u1802\u0005\u0133\u0000\u0000\u1802"+
55887 		"\u180c\u0005\u0134\u0000\u0000\u1803\u180c\u00053\u0000\u0000\u1804\u180c"+
55888 		"\u0005\u00e8\u0000\u0000\u1805\u1806\u0005I\u0000\u0000\u1806\u180c\u0005"+
55889 		"\u0135\u0000\u0000\u1807\u1808\u00053\u0000\u0000\u1808\u1809\u0005q\u0000"+
55890 		"\u0000\u1809\u180a\u0005\u0139\u0000\u0000\u180a\u180c\u0005B\u0000\u0000"+
55891 		"\u180b\u1800\u0001\u0000\u0000\u0000\u180b\u1801\u0001\u0000\u0000\u0000"+
55892 		"\u180b\u1803\u0001\u0000\u0000\u0000\u180b\u1804\u0001\u0000\u0000\u0000"+
55893 		"\u180b\u1805\u0001\u0000\u0000\u0000\u180b\u1807\u0001\u0000\u0000\u0000"+
55894 		"\u180c\u0349\u0001\u0000\u0000\u0000\u180d\u1818\u0005\u0131\u0000\u0000"+
55895 		"\u180e\u180f\u0005\u0133\u0000\u0000\u180f\u1818\u0005\u0134\u0000\u0000"+
55896 		"\u1810\u1818\u00053\u0000\u0000\u1811\u1818\u0005\u00e8\u0000\u0000\u1812"+
55897 		"\u1813\u0005I\u0000\u0000\u1813\u1818\u0005\u0135\u0000\u0000\u1814\u1815"+
55898 		"\u00053\u0000\u0000\u1815\u1816\u0005q\u0000\u0000\u1816\u1818\u0005\u0137"+
55899 		"\u0000\u0000\u1817\u180d\u0001\u0000\u0000\u0000\u1817\u180e\u0001\u0000"+
55900 		"\u0000\u0000\u1817\u1810\u0001\u0000\u0000\u0000\u1817\u1811\u0001\u0000"+
55901 		"\u0000\u0000\u1817\u1812\u0001\u0000\u0000\u0000\u1817\u1814\u0001\u0000"+
55902 		"\u0000\u0000\u1818\u034b\u0001\u0000\u0000\u0000\u1819\u182b\u00053\u0000"+
55903 		"\u0000\u181a\u182b\u0005\u012e\u0000\u0000\u181b\u181d\u0005\u0131\u0000"+
55904 		"\u0000\u181c\u181e\u0005\u013a\u0000\u0000\u181d\u181c\u0001\u0000\u0000"+
55905 		"\u0000\u181d\u181e\u0001\u0000\u0000\u0000\u181e\u182b\u0001\u0000\u0000"+
55906 		"\u0000\u181f\u1820\u0005\u0133\u0000\u0000\u1820\u182b\u0005\u0134\u0000"+
55907 		"\u0000\u1821\u1823\u0005I\u0000\u0000\u1822\u1824\u0005q\u0000\u0000\u1823"+
55908 		"\u1822\u0001\u0000\u0000\u0000\u1823\u1824\u0001\u0000\u0000\u0000\u1824"+
55909 		"\u1825\u0001\u0000\u0000\u0000\u1825\u182b\u0005\u0135\u0000\u0000\u1826"+
55910 		"\u1827\u00053\u0000\u0000\u1827\u1828\u0005q\u0000\u0000\u1828\u1829\u0005"+
55911 		"\u0142\u0000\u0000\u1829\u182b\u0005t\u0000\u0000\u182a\u1819\u0001\u0000"+
55912 		"\u0000\u0000\u182a\u181a\u0001\u0000\u0000\u0000\u182a\u181b\u0001\u0000"+
55913 		"\u0000\u0000\u182a\u181f\u0001\u0000\u0000\u0000\u182a\u1821\u0001\u0000"+
55914 		"\u0000\u0000\u182a\u1826\u0001\u0000\u0000\u0000\u182b\u034d\u0001\u0000"+
55915 		"\u0000\u0000\u182c\u182f\u0003\u0350\u01a8\u0000\u182d\u182f\u0003\u0352"+
55916 		"\u01a9\u0000\u182e\u182c\u0001\u0000\u0000\u0000\u182e\u182d\u0001\u0000"+
55917 		"\u0000\u0000\u182f\u034f\u0001\u0000\u0000\u0000\u1830\u183c\u0005\u0131"+
55918 		"\u0000\u0000\u1831\u1832\u0005\u0133\u0000\u0000\u1832\u183c\u0005\u0134"+
55919 		"\u0000\u0000\u1833\u183c\u00053\u0000\u0000\u1834\u183c\u0005\u00e8\u0000"+
55920 		"\u0000\u1835\u1836\u0005I\u0000\u0000\u1836\u183c\u0005\u0135\u0000\u0000"+
55921 		"\u1837\u1838\u00053\u0000\u0000\u1838\u1839\u0005q\u0000\u0000\u1839\u183a"+
55922 		"\u0005\u0162\u0000\u0000\u183a\u183c\u0005\u0130\u0000\u0000\u183b\u1830"+
55923 		"\u0001\u0000\u0000\u0000\u183b\u1831\u0001\u0000\u0000\u0000\u183b\u1833"+
55924 		"\u0001\u0000\u0000\u0000\u183b\u1834\u0001\u0000\u0000\u0000\u183b\u1835"+
55925 		"\u0001\u0000\u0000\u0000\u183b\u1837\u0001\u0000\u0000\u0000\u183c\u0351"+
55926 		"\u0001\u0000\u0000\u0000\u183d\u1849\u00053\u0000\u0000\u183e\u1849\u0005"+
55927 		"\u0131\u0000\u0000\u183f\u1849\u0005\u00e8\u0000\u0000\u1840\u1841\u0005"+
55928 		"\u0133\u0000\u0000\u1841\u1849\u0005\u0134\u0000\u0000\u1842\u1843\u0005"+
55929 		"I\u0000\u0000\u1843\u1849\u0005\u0135\u0000\u0000\u1844\u1845\u00053\u0000"+
55930 		"\u0000\u1845\u1846\u0005q\u0000\u0000\u1846\u1847\u0005\u0162\u0000\u0000"+
55931 		"\u1847\u1849\u0005\u0130\u0000\u0000\u1848\u183d\u0001\u0000\u0000\u0000"+
55932 		"\u1848\u183e\u0001\u0000\u0000\u0000\u1848\u183f\u0001\u0000\u0000\u0000"+
55933 		"\u1848\u1840\u0001\u0000\u0000\u0000\u1848\u1842\u0001\u0000\u0000\u0000"+
55934 		"\u1848\u1844\u0001\u0000\u0000\u0000\u1849\u0353\u0001\u0000\u0000\u0000"+
55935 		"\u184a\u1852\u0005\u0131\u0000\u0000\u184b\u1852\u0005\u012b\u0000\u0000"+
55936 		"\u184c\u1852\u0005\u00e8\u0000\u0000\u184d\u184e\u0005\u0133\u0000\u0000"+
55937 		"\u184e\u1852\u0005\u0134\u0000\u0000\u184f\u1850\u0005I\u0000\u0000\u1850"+
55938 		"\u1852\u0005\u0135\u0000\u0000\u1851\u184a\u0001\u0000\u0000\u0000\u1851"+
55939 		"\u184b\u0001\u0000\u0000\u0000\u1851\u184c\u0001\u0000\u0000\u0000\u1851"+
55940 		"\u184d\u0001\u0000\u0000\u0000\u1851\u184f\u0001\u0000\u0000\u0000\u1852"+
55941 		"\u0355\u0001\u0000\u0000\u0000\u1853\u185c\u00053\u0000\u0000\u1854\u185c"+
55942 		"\u0005\u0131\u0000\u0000\u1855\u185c\u0005\u012b\u0000\u0000\u1856\u185c"+
55943 		"\u0005\u00e8\u0000\u0000\u1857\u1858\u0005\u0133\u0000\u0000\u1858\u185c"+
55944 		"\u0005\u0134\u0000\u0000\u1859\u185a\u0005I\u0000\u0000\u185a\u185c\u0005"+
55945 		"\u0135\u0000\u0000\u185b\u1853\u0001\u0000\u0000\u0000\u185b\u1854\u0001"+
55946 		"\u0000\u0000\u0000\u185b\u1855\u0001\u0000\u0000\u0000\u185b\u1856\u0001"+
55947 		"\u0000\u0000\u0000\u185b\u1857\u0001\u0000\u0000\u0000\u185b\u1859\u0001"+
55948 		"\u0000\u0000\u0000\u185c\u0357\u0001\u0000\u0000\u0000\u185d\u185e\u0007"+
55949 		"X\u0000\u0000\u185e\u0359\u0001\u0000\u0000\u0000\u185f\u1860\u0005\u02ac"+
55950 		"\u0000\u0000\u1860\u1861\u0005\u000e\u0000\u0000\u1861\u1862\u0005\u000e"+
55951 		"\u0000\u0000\u1862\u035b\u0001\u0000\u0000\u0000\u1863\u188c\u0005\u0137"+
55952 		"\u0000\u0000\u1864\u1865\u0005\u0139\u0000\u0000\u1865\u188c\u0005B\u0000"+
55953 		"\u0000\u1866\u1867\u0005\u0142\u0000\u0000\u1867\u188c\u0005t\u0000\u0000"+
55954 		"\u1868\u188c\u0005\u0159\u0000\u0000\u1869\u188c\u0005\u00e9\u0000\u0000"+
55955 		"\u186a\u188c\u0005\u00ea\u0000\u0000\u186b\u186c\u0005\u0136\u0000\u0000"+
55956 		"\u186c\u188c\u0005\u00ea\u0000\u0000\u186d\u186e\u0005\u00ca\u0000\u0000"+
55957 		"\u186e\u186f\u0005\u0155\u0000\u0000\u186f\u188c\u0005\u0143\u0000\u0000"+
55958 		"\u1870\u188c\u0005\u0144\u0000\u0000\u1871\u1872\u0005\u0162\u0000\u0000"+
55959 		"\u1872\u188c\u0007Y\u0000\u0000\u1873\u188c\u0005\u0114\u0000\u0000\u1874"+
55960 		"\u188c\u00056\u0000\u0000\u1875\u1876\u0005\u028f\u0000\u0000\u1876\u1877"+
55961 		"\u0005\u0290\u0000\u0000\u1877\u188c\u0005\u0291\u0000\u0000\u1878\u188c"+
55962 		"\u0005\u010e\u0000\u0000\u1879\u187a\u0005\u013a\u0000\u0000\u187a\u188c"+
55963 		"\u0005\u00ea\u0000\u0000\u187b\u188c\u0005\u015a\u0000\u0000\u187c\u187d"+
55964 		"\u0005\u0165\u0000\u0000\u187d\u188c\u0005\u00ae\u0000\u0000\u187e\u187f"+
55965 		"\u0005\u0166\u0000\u0000\u187f\u1880\u0005\u0158\u0000\u0000\u1880\u188c"+
55966 		"\u0005\u0167\u0000\u0000\u1881\u188c\u0005\u0168\u0000\u0000\u1882\u188c"+
55967 		"\u0005\u0158\u0000\u0000\u1883\u1884\u0005\u0138\u0000\u0000\u1884\u188c"+
55968 		"\u0005B\u0000\u0000\u1885\u188c\u0005.\u0000\u0000\u1886\u188c\u0005\u012b"+
55969 		"\u0000\u0000\u1887\u188c\u0005\u00ae\u0000\u0000\u1888\u1889\u0005\u014a"+
55970 		"\u0000\u0000\u1889\u188a\u00056\u0000\u0000\u188a\u188c\u0005\u016f\u0000"+
55971 		"\u0000\u188b\u1863\u0001\u0000\u0000\u0000\u188b\u1864\u0001\u0000\u0000"+
55972 		"\u0000\u188b\u1866\u0001\u0000\u0000\u0000\u188b\u1868\u0001\u0000\u0000"+
55973 		"\u0000\u188b\u1869\u0001\u0000\u0000\u0000\u188b\u186a\u0001\u0000\u0000"+
55974 		"\u0000\u188b\u186b\u0001\u0000\u0000\u0000\u188b\u186d\u0001\u0000\u0000"+
55975 		"\u0000\u188b\u1870\u0001\u0000\u0000\u0000\u188b\u1871\u0001\u0000\u0000"+
55976 		"\u0000\u188b\u1873\u0001\u0000\u0000\u0000\u188b\u1874\u0001\u0000\u0000"+
55977 		"\u0000\u188b\u1875\u0001\u0000\u0000\u0000\u188b\u1878\u0001\u0000\u0000"+
55978 		"\u0000\u188b\u1879\u0001\u0000\u0000\u0000\u188b\u187b\u0001\u0000\u0000"+
55979 		"\u0000\u188b\u187c\u0001\u0000\u0000\u0000\u188b\u187e\u0001\u0000\u0000"+
55980 		"\u0000\u188b\u1881\u0001\u0000\u0000\u0000\u188b\u1882\u0001\u0000\u0000"+
55981 		"\u0000\u188b\u1883\u0001\u0000\u0000\u0000\u188b\u1885\u0001\u0000\u0000"+
55982 		"\u0000\u188b\u1886\u0001\u0000\u0000\u0000\u188b\u1887\u0001\u0000\u0000"+
55983 		"\u0000\u188b\u1888\u0001\u0000\u0000\u0000\u188c\u035d\u0001\u0000\u0000"+
55984 		"\u0000\u188d\u188e\u0007Z\u0000\u0000\u188e\u035f\u0001\u0000\u0000\u0000"+
55985 		"\u188f\u1890\u0003\u00ccf\u0000\u1890\u0361\u0001\u0000\u0000\u0000\u1891"+
55986 		"\u1897\u0005\u0285\u0000\u0000\u1892\u1895\u0003\u001c\u000e\u0000\u1893"+
55987 		"\u1894\u0005L\u0000\u0000\u1894\u1896\u0005\u0286\u0000\u0000\u1895\u1893"+
55988 		"\u0001\u0000\u0000\u0000\u1895\u1896\u0001\u0000\u0000\u0000\u1896\u1898"+
55989 		"\u0001\u0000\u0000\u0000\u1897\u1892\u0001\u0000\u0000\u0000\u1897\u1898"+
55990 		"\u0001\u0000\u0000\u0000\u1898\u0363\u0001\u0000\u0000\u0000\u1899\u189a"+
55991 		"\u00052\u0000\u0000\u189a\u18a3\u0005\u00e9\u0000\u0000\u189b\u18a4\u0003"+
55992 		"\u0366\u01b3\u0000\u189c\u18a4\u0003\u0368\u01b4\u0000\u189d\u18a4\u0003"+
55993 		"\u036a\u01b5\u0000\u189e\u18a4\u0003\u036c\u01b6\u0000\u189f\u18a4\u0003"+
55994 		"\u0372\u01b9\u0000\u18a0\u18a4\u0003\u0374\u01ba\u0000\u18a1\u18a4\u0003"+
55995 		"\u0376\u01bb\u0000\u18a2\u18a4\u0003\u037c\u01be\u0000\u18a3\u189b\u0001"+
55996 		"\u0000\u0000\u0000\u18a3\u189c\u0001\u0000\u0000\u0000\u18a3\u189d\u0001"+
55997 		"\u0000\u0000\u0000\u18a3\u189e\u0001\u0000\u0000\u0000\u18a3\u189f\u0001"+
55998 		"\u0000\u0000\u0000\u18a3\u18a0\u0001\u0000\u0000\u0000\u18a3\u18a1\u0001"+
55999 		"\u0000\u0000\u0000\u18a3\u18a2\u0001\u0000\u0000\u0000\u18a3\u18a4\u0001"+
56000 		"\u0000\u0000\u0000\u18a4\u0365\u0001\u0000\u0000\u0000\u18a5\u18a9\u0003"+
56001 		"\u037c\u01be\u0000\u18a6\u18a7\u0007[\u0000\u0000\u18a7\u18a8\u0005\u010e"+
56002 		"\u0000\u0000\u18a8\u18aa\u0003*\u0015\u0000\u18a9\u18a6\u0001\u0000\u0000"+
56003 		"\u0000\u18a9\u18aa\u0001\u0000\u0000\u0000\u18aa\u18b4\u0001\u0000\u0000"+
56004 		"\u0000\u18ab\u18ac\u0005L\u0000\u0000\u18ac\u18b1\u0003\u0370\u01b8\u0000"+
56005 		"\u18ad\u18ae\u0005%\u0000\u0000\u18ae\u18b0\u0003\u0370\u01b8\u0000\u18af"+
56006 		"\u18ad\u0001\u0000\u0000\u0000\u18b0\u18b3\u0001\u0000\u0000\u0000\u18b1"+
56007 		"\u18af\u0001\u0000\u0000\u0000\u18b1\u18b2\u0001\u0000\u0000\u0000\u18b2"+
56008 		"\u18b5\u0001\u0000\u0000\u0000\u18b3\u18b1\u0001\u0000\u0000\u0000\u18b4"+
56009 		"\u18ab\u0001\u0000\u0000\u0000\u18b4\u18b5\u0001\u0000\u0000\u0000\u18b5"+
56010 		"\u0367\u0001\u0000\u0000\u0000\u18b6\u18c0\u0003\u0378\u01bc\u0000\u18b7"+
56011 		"\u18b8\u0005L\u0000\u0000\u18b8\u18bd\u0003\u036e\u01b7\u0000\u18b9\u18ba"+
56012 		"\u0005%\u0000\u0000\u18ba\u18bc\u0003\u036e\u01b7\u0000\u18bb\u18b9\u0001"+
56013 		"\u0000\u0000\u0000\u18bc\u18bf\u0001\u0000\u0000\u0000\u18bd\u18bb\u0001"+
56014 		"\u0000\u0000\u0000\u18bd\u18be\u0001\u0000\u0000\u0000\u18be\u18c1\u0001"+
56015 		"\u0000\u0000\u0000\u18bf\u18bd\u0001\u0000\u0000\u0000\u18c0\u18b7\u0001"+
56016 		"\u0000\u0000\u0000\u18c0\u18c1\u0001\u0000\u0000\u0000\u18c1\u18d8\u0001"+
56017 		"\u0000\u0000\u0000\u18c2\u18c3\u0003\u037c\u01be\u0000\u18c3\u18c4\u0005"+
56018 		"L\u0000\u0000\u18c4\u18c5\u0005\u00d3\u0000\u0000\u18c5\u18c6\u0005\u0018"+
56019 		"\u0000\u0000\u18c6\u18d0\u0003\u001c\u000e\u0000\u18c7\u18c8\u0005%\u0000"+
56020 		"\u0000\u18c8\u18cd\u0003\u036e\u01b7\u0000\u18c9\u18ca\u0005%\u0000\u0000"+
56021 		"\u18ca\u18cc\u0003\u036e\u01b7\u0000\u18cb\u18c9\u0001\u0000\u0000\u0000"+
56022 		"\u18cc\u18cf\u0001\u0000\u0000\u0000\u18cd\u18cb\u0001\u0000\u0000\u0000"+
56023 		"\u18cd\u18ce\u0001\u0000\u0000\u0000\u18ce\u18d1\u0001\u0000\u0000\u0000"+
56024 		"\u18cf\u18cd\u0001\u0000\u0000\u0000\u18d0\u18c7\u0001\u0000\u0000\u0000"+
56025 		"\u18d0\u18d1\u0001\u0000\u0000\u0000\u18d1\u18d8\u0001\u0000\u0000\u0000"+
56026 		"\u18d2\u18d3\u0003\u037a\u01bd\u0000\u18d3\u18d4\u0005T\u0000\u0000\u18d4"+
56027 		"\u18d5\u0005\u014e\u0000\u0000\u18d5\u18d6\u0005\u028a\u0000\u0000\u18d6"+
56028 		"\u18d8\u0001\u0000\u0000\u0000\u18d7\u18b6\u0001\u0000\u0000\u0000\u18d7"+
56029 		"\u18c2\u0001\u0000\u0000\u0000\u18d7\u18d2\u0001\u0000\u0000\u0000\u18d8"+
56030 		"\u0369\u0001\u0000\u0000\u0000\u18d9\u18dd\u0003\u0378\u01bc\u0000\u18da"+
56031 		"\u18db\u0007[\u0000\u0000\u18db\u18dc\u0005\u010e\u0000\u0000\u18dc\u18de"+
56032 		"\u0003\u0378\u01bc\u0000\u18dd\u18da\u0001\u0000\u0000\u0000\u18dd\u18de"+
56033 		"\u0001\u0000\u0000\u0000\u18de\u18e5\u0001\u0000\u0000\u0000\u18df\u18e0"+
56034 		"\u0003\u037c\u01be\u0000\u18e0\u18e1\u0007[\u0000\u0000\u18e1\u18e2\u0005"+
56035 		"\u010e\u0000\u0000\u18e2\u18e3\u0003\u0378\u01bc\u0000\u18e3\u18e5\u0001"+
56036 		"\u0000\u0000\u0000\u18e4\u18d9\u0001\u0000\u0000\u0000\u18e4\u18df\u0001"+
56037 		"\u0000\u0000\u0000\u18e5\u18ef\u0001\u0000\u0000\u0000\u18e6\u18e7\u0005"+
56038 		"L\u0000\u0000\u18e7\u18ec\u0003\u0370\u01b8\u0000\u18e8\u18e9\u0005%\u0000"+
56039 		"\u0000\u18e9\u18eb\u0003\u0370\u01b8\u0000\u18ea\u18e8\u0001\u0000\u0000"+
56040 		"\u0000\u18eb\u18ee\u0001\u0000\u0000\u0000\u18ec\u18ea\u0001\u0000\u0000"+
56041 		"\u0000\u18ec\u18ed\u0001\u0000\u0000\u0000\u18ed\u18f0\u0001\u0000\u0000"+
56042 		"\u0000\u18ee\u18ec\u0001\u0000\u0000\u0000\u18ef\u18e6\u0001\u0000\u0000"+
56043 		"\u0000\u18ef\u18f0\u0001\u0000\u0000\u0000\u18f0\u036b\u0001\u0000\u0000"+
56044 		"\u0000\u18f1\u1906\u0003\u037c\u01be\u0000\u18f2\u18f3\u0005\u00d4\u0000"+
56045 		"\u0000\u18f3\u18fd\u0005\u010e\u0000\u0000\u18f4\u18f5\u0005L\u0000\u0000"+
56046 		"\u18f5\u18fa\u0003\u0370\u01b8\u0000\u18f6\u18f7\u0005%\u0000\u0000\u18f7"+
56047 		"\u18f9\u0003\u0370\u01b8\u0000\u18f8\u18f6\u0001\u0000\u0000\u0000\u18f9"+
56048 		"\u18fc\u0001\u0000\u0000\u0000\u18fa\u18f8\u0001\u0000\u0000\u0000\u18fa"+
56049 		"\u18fb\u0001\u0000\u0000\u0000\u18fb\u18fe\u0001\u0000\u0000\u0000\u18fc"+
56050 		"\u18fa\u0001\u0000\u0000\u0000\u18fd\u18f4\u0001\u0000\u0000\u0000\u18fd"+
56051 		"\u18fe\u0001\u0000\u0000\u0000\u18fe\u1907\u0001\u0000\u0000\u0000\u18ff"+
56052 		"\u1900\u0007[\u0000\u0000\u1900\u1901\u0005\u0159\u0000\u0000\u1901\u1907"+
56053 		"\u0003*\u0015\u0000\u1902\u1903\u0007[\u0000\u0000\u1903\u1904\u0005\u0139"+
56054 		"\u0000\u0000\u1904\u1905\u0005B\u0000\u0000\u1905\u1907\u0003*\u0015\u0000"+
56055 		"\u1906\u18f2\u0001\u0000\u0000\u0000\u1906\u18ff\u0001\u0000\u0000\u0000"+
56056 		"\u1906\u1902\u0001\u0000\u0000\u0000\u1907\u036d\u0001\u0000\u0000\u0000"+
56057 		"\u1908\u1909\u0005\u0287\u0000\u0000\u1909\u190a\u0005\u0018\u0000\u0000"+
56058 		"\u190a\u191a\u00034\u001a\u0000\u190b\u190c\u0005\u0277\u0000\u0000\u190c"+
56059 		"\u190f\u0005\u0018\u0000\u0000\u190d\u1910\u0005\u0113\u0000\u0000\u190e"+
56060 		"\u1910\u0003*\u0015\u0000\u190f\u190d\u0001\u0000\u0000\u0000\u190f\u190e"+
56061 		"\u0001\u0000\u0000\u0000\u1910\u191a\u0001\u0000\u0000\u0000\u1911\u1912"+
56062 		"\u0005\u028b\u0000\u0000\u1912\u1913\u0005\u0018\u0000\u0000\u1913\u191a"+
56063 		"\u0003\u0396\u01cb\u0000\u1914\u1915\u0005\u0288\u0000\u0000\u1915\u1917"+
56064 		"\u0005\u0018\u0000\u0000\u1916\u1918\u0007\u0000\u0000\u0000\u1917\u1916"+
56065 		"\u0001\u0000\u0000\u0000\u1917\u1918\u0001\u0000\u0000\u0000\u1918\u191a"+
56066 		"\u0001\u0000\u0000\u0000\u1919\u1908\u0001\u0000\u0000\u0000\u1919\u190b"+
56067 		"\u0001\u0000\u0000\u0000\u1919\u1911\u0001\u0000\u0000\u0000\u1919\u1914"+
56068 		"\u0001\u0000\u0000\u0000\u191a\u036f\u0001\u0000\u0000\u0000\u191b\u191c"+
56069 		"\u0005\u0287\u0000\u0000\u191c\u191d\u0005\u0018\u0000\u0000\u191d\u192a"+
56070 		"\u00034\u001a\u0000\u191e\u191f\u0005\u0277\u0000\u0000\u191f\u1922\u0005"+
56071 		"\u0018\u0000\u0000\u1920\u1923\u0005\u0113\u0000\u0000\u1921\u1923\u0003"+
56072 		"*\u0015\u0000\u1922\u1920\u0001\u0000\u0000\u0000\u1922\u1921\u0001\u0000"+
56073 		"\u0000\u0000\u1923\u192a\u0001\u0000\u0000\u0000\u1924\u1925\u0005\u0288"+
56074 		"\u0000\u0000\u1925\u1927\u0005\u0018\u0000\u0000\u1926\u1928\u0007\u0000"+
56075 		"\u0000\u0000\u1927\u1926\u0001\u0000\u0000\u0000\u1927\u1928\u0001\u0000"+
56076 		"\u0000\u0000\u1928\u192a\u0001\u0000\u0000\u0000\u1929\u191b\u0001\u0000"+
56077 		"\u0000\u0000\u1929\u191e\u0001\u0000\u0000\u0000\u1929\u1924\u0001\u0000"+
56078 		"\u0000\u0000\u192a\u0371\u0001\u0000\u0000\u0000\u192b\u192f\u0003\u037c"+
56079 		"\u01be\u0000\u192c\u192d\u0007[\u0000\u0000\u192d\u192e\u0005\u010e\u0000"+
56080 		"\u0000\u192e\u1930\u0003*\u0015\u0000\u192f\u192c\u0001\u0000\u0000\u0000"+
56081 		"\u192f\u1930\u0001\u0000\u0000\u0000\u1930\u1940\u0001\u0000\u0000\u0000"+
56082 		"\u1931\u1932\u0005T\u0000\u0000\u1932\u1933\u0005\u014e\u0000\u0000\u1933"+
56083 		"\u193d\u0005\u028a\u0000\u0000\u1934\u1935\u0005L\u0000\u0000\u1935\u193a"+
56084 		"\u0003\u0370\u01b8\u0000\u1936\u1937\u0005%\u0000\u0000\u1937\u1939\u0003"+
56085 		"\u0370\u01b8\u0000\u1938\u1936\u0001\u0000\u0000\u0000\u1939\u193c\u0001"+
56086 		"\u0000\u0000\u0000\u193a\u1938\u0001\u0000\u0000\u0000\u193a\u193b\u0001"+
56087 		"\u0000\u0000\u0000\u193b\u193e\u0001\u0000\u0000\u0000\u193c\u193a\u0001"+
56088 		"\u0000\u0000\u0000\u193d\u1934\u0001\u0000\u0000\u0000\u193d\u193e\u0001"+
56089 		"\u0000\u0000\u0000\u193e\u1940\u0001\u0000\u0000\u0000\u193f\u192b\u0001"+
56090 		"\u0000\u0000\u0000\u193f\u1931\u0001\u0000\u0000\u0000\u1940\u0373\u0001"+
56091 		"\u0000\u0000\u0000\u1941\u1947\u0003\u037c\u01be\u0000\u1942\u1943\u0007"+
56092 		"[\u0000\u0000\u1943\u1944\u0005\u010e\u0000\u0000\u1944\u1948\u0003*\u0015"+
56093 		"\u0000\u1945\u1946\u0005\u00d4\u0000\u0000\u1946\u1948\u0005\u010e\u0000"+
56094 		"\u0000\u1947\u1942\u0001\u0000\u0000\u0000\u1947\u1945\u0001\u0000\u0000"+
56095 		"\u0000\u1947\u1948\u0001\u0000\u0000\u0000\u1948\u194d\u0001\u0000\u0000"+
56096 		"\u0000\u1949\u194a\u0005L\u0000\u0000\u194a\u194b\u0005\u0287\u0000\u0000"+
56097 		"\u194b\u194c\u0005\u0018\u0000\u0000\u194c\u194e\u00034\u001a\u0000\u194d"+
56098 		"\u1949\u0001\u0000\u0000\u0000\u194d\u194e\u0001\u0000\u0000\u0000\u194e"+
56099 		"\u0375\u0001\u0000\u0000\u0000\u194f\u1950\u0003\u037a\u01bd\u0000\u1950"+
56100 		"\u1951\u0005T\u0000\u0000\u1951\u1952\u0005\u014e\u0000\u0000\u1952\u1957"+
56101 		"\u0005\u028a\u0000\u0000\u1953\u1954\u0005L\u0000\u0000\u1954\u1955\u0005"+
56102 		"\u0287\u0000\u0000\u1955\u1956\u0005\u0018\u0000\u0000\u1956\u1958\u0003"+
56103 		"4\u001a\u0000\u1957\u1953\u0001\u0000\u0000\u0000\u1957\u1958\u0001\u0000"+
56104 		"\u0000\u0000\u1958\u0377\u0001\u0000\u0000\u0000\u1959\u195a\u0003\u037c"+
56105 		"\u01be\u0000\u195a\u0379\u0001\u0000\u0000\u0000\u195b\u195c\u0003\u037c"+
56106 		"\u01be\u0000\u195c\u037b\u0001\u0000\u0000\u0000\u195d\u195e\u0003\u037e"+
56107 		"\u01bf\u0000\u195e\u037d\u0001\u0000\u0000\u0000\u195f\u1962\u0003*\u0015"+
56108 		"\u0000\u1960\u1961\u0005\u0014\u0000\u0000\u1961\u1963\u0003*\u0015\u0000"+
56109 		"\u1962\u1960\u0001\u0000\u0000\u0000\u1962\u1963\u0001\u0000\u0000\u0000"+
56110 		"\u1963\u037f\u0001\u0000\u0000\u0000\u1964\u1965\u00054\u0000\u0000\u1965"+
56111 		"\u1967\u0005\u00e9\u0000\u0000\u1966\u1968\u0003\u00deo\u0000\u1967\u1966"+
56112 		"\u0001\u0000\u0000\u0000\u1967\u1968\u0001\u0000\u0000\u0000\u1968\u1969"+
56113 		"\u0001\u0000\u0000\u0000\u1969\u196a\u0003\u037c\u01be\u0000\u196a\u0381"+
56114 		"\u0001\u0000\u0000\u0000\u196b\u196c\u00053\u0000\u0000\u196c\u196d\u0005"+
56115 		"\u00e9\u0000\u0000\u196d\u197a\u0003\u037c\u01be\u0000\u196e\u196f\u0005"+
56116 		"L\u0000\u0000\u196f\u1974\u0003\u0384\u01c2\u0000\u1970\u1971\u0005%\u0000"+
56117 		"\u0000\u1971\u1973\u0003\u0384\u01c2\u0000\u1972\u1970\u0001\u0000\u0000"+
56118 		"\u0000\u1973\u1976\u0001\u0000\u0000\u0000\u1974\u1972\u0001\u0000\u0000"+
56119 		"\u0000\u1974\u1975\u0001\u0000\u0000\u0000\u1975\u197b\u0001\u0000\u0000"+
56120 		"\u0000\u1976\u1974\u0001\u0000\u0000\u0000\u1977\u1978\u0005T\u0000\u0000"+
56121 		"\u1978\u1979\u0005\u014e\u0000\u0000\u1979\u197b\u0005\u028a\u0000\u0000"+
56122 		"\u197a\u196e\u0001\u0000\u0000\u0000\u197a\u1977\u0001\u0000\u0000\u0000"+
56123 		"\u197b\u0383\u0001\u0000\u0000\u0000\u197c\u197d\u0005\u00a8\u0000\u0000"+
56124 		"\u197d\u197e\u0005\u0018\u0000\u0000\u197e\u199c\u0003\u037c\u01be\u0000"+
56125 		"\u197f\u1980\u0005\u0287\u0000\u0000\u1980\u1983\u0005\u0018\u0000\u0000"+
56126 		"\u1981\u1984\u00034\u001a\u0000\u1982\u1984\u0005j\u0000\u0000\u1983\u1981"+
56127 		"\u0001\u0000\u0000\u0000\u1983\u1982\u0001\u0000\u0000\u0000\u1984\u199c"+
56128 		"\u0001\u0000\u0000\u0000\u1985\u1986\u0005\u010e\u0000\u0000\u1986\u1987"+
56129 		"\u0005\u0018\u0000\u0000\u1987\u199c\u0003*\u0015\u0000\u1988\u1989\u0005"+
56130 		"\u00d3\u0000\u0000\u1989\u198a\u0005\u0018\u0000\u0000\u198a\u198e\u0003"+
56131 		"\u001c\u000e\u0000\u198b\u198c\u0005\u0289\u0000\u0000\u198c\u198d\u0005"+
56132 		"\u0018\u0000\u0000\u198d\u198f\u0003\u001c\u000e\u0000\u198e\u198b\u0001"+
56133 		"\u0000\u0000\u0000\u198e\u198f\u0001\u0000\u0000\u0000\u198f\u199c\u0001"+
56134 		"\u0000\u0000\u0000\u1990\u1991\u0005\u0277\u0000\u0000\u1991\u1994\u0005"+
56135 		"\u0018\u0000\u0000\u1992\u1995\u0005\u0113\u0000\u0000\u1993\u1995\u0003"+
56136 		"*\u0015\u0000\u1994\u1992\u0001\u0000\u0000\u0000\u1994\u1993\u0001\u0000"+
56137 		"\u0000\u0000\u1995\u199c\u0001\u0000\u0000\u0000\u1996\u1997\u0005\u0288"+
56138 		"\u0000\u0000\u1997\u1999\u0005\u0018\u0000\u0000\u1998\u199a\u0007\u0000"+
56139 		"\u0000\u0000\u1999\u1998\u0001\u0000\u0000\u0000\u1999\u199a\u0001\u0000"+
56140 		"\u0000\u0000\u199a\u199c\u0001\u0000\u0000\u0000\u199b\u197c\u0001\u0000"+
56141 		"\u0000\u0000\u199b\u197f\u0001\u0000\u0000\u0000\u199b\u1985\u0001\u0000"+
56142 		"\u0000\u0000\u199b\u1988\u0001\u0000\u0000\u0000\u199b\u1990\u0001\u0000"+
56143 		"\u0000\u0000\u199b\u1996\u0001\u0000\u0000\u0000\u199c\u0385\u0001\u0000"+
56144 		"\u0000\u0000\u199d\u199e\u00052\u0000\u0000\u199e\u199f\u0005\u00ea\u0000"+
56145 		"\u0000\u199f\u19a2\u0003N\'\u0000\u19a0\u19a1\u0005\u0280\u0000\u0000"+
56146 		"\u19a1\u19a3\u0003N\'\u0000\u19a2\u19a0\u0001\u0000\u0000\u0000\u19a2"+
56147 		"\u19a3\u0001\u0000\u0000\u0000\u19a3\u0387\u0001\u0000\u0000\u0000\u19a4"+
56148 		"\u19a5\u00054\u0000\u0000\u19a5\u19a7\u0005\u00ea\u0000\u0000\u19a6\u19a8"+
56149 		"\u0003\u00deo\u0000\u19a7\u19a6\u0001\u0000\u0000\u0000\u19a7\u19a8\u0001"+
56150 		"\u0000\u0000\u0000\u19a8\u19a9\u0001\u0000\u0000\u0000\u19a9\u19aa\u0003"+
56151 		"N\'\u0000\u19aa\u0389\u0001\u0000\u0000\u0000\u19ab\u19ac\u00053\u0000"+
56152 		"\u0000\u19ac\u19ad\u0005\u00ea\u0000\u0000\u19ad\u19b8\u0003N\'\u0000"+
56153 		"\u19ae\u19af\u00059\u0000\u0000\u19af\u19b0\u0005\u0293\u0000\u0000\u19b0"+
56154 		"\u19b9\u0003\u030e\u0187\u0000\u19b1\u19b2\u00054\u0000\u0000\u19b2\u19b3"+
56155 		"\u0005\u0293\u0000\u0000\u19b3\u19b9\u0003\u030e\u0187\u0000\u19b4\u19b5"+
56156 		"\u0005L\u0000\u0000\u19b5\u19b6\u0005\u00a8\u0000\u0000\u19b6\u19b7\u0005"+
56157 		"\u0018\u0000\u0000\u19b7\u19b9\u0003N\'\u0000\u19b8\u19ae\u0001\u0000"+
56158 		"\u0000\u0000\u19b8\u19b1\u0001\u0000\u0000\u0000\u19b8\u19b4\u0001\u0000"+
56159 		"\u0000\u0000\u19b9\u038b\u0001\u0000\u0000\u0000\u19ba\u19bb\u00052\u0000"+
56160 		"\u0000\u19bb\u19bc\u0005\u010e\u0000\u0000\u19bc\u19c2\u0003\u037e\u01bf"+
56161 		"\u0000\u19bd\u19c3\u0003\u038e\u01c7\u0000\u19be\u19c3\u0003\u039c\u01ce"+
56162 		"\u0000\u19bf\u19c3\u0003\u03a0\u01d0\u0000\u19c0\u19c3\u0003\u03a4\u01d2"+
56163 		"\u0000\u19c1\u19c3\u0003\u03a8\u01d4\u0000\u19c2\u19bd\u0001\u0000\u0000"+
56164 		"\u0000\u19c2\u19be\u0001\u0000\u0000\u0000\u19c2\u19bf\u0001\u0000\u0000"+
56165 		"\u0000\u19c2\u19c0\u0001\u0000\u0000\u0000\u19c2\u19c1\u0001\u0000\u0000"+
56166 		"\u0000\u19c3\u038d\u0001\u0000\u0000\u0000\u19c4\u19c5\u0005L\u0000\u0000"+
56167 		"\u19c5\u19c9\u0003\u0390\u01c8\u0000\u19c6\u19c7\u0005T\u0000\u0000\u19c7"+
56168 		"\u19c9\u0003\u0398\u01cc\u0000\u19c8\u19c4\u0001\u0000\u0000\u0000\u19c8"+
56169 		"\u19c6\u0001\u0000\u0000\u0000\u19c9\u038f\u0001\u0000\u0000\u0000\u19ca"+
56170 		"\u19cb\u0005\u00d3\u0000\u0000\u19cb\u19d0\u0005\u0018\u0000\u0000\u19cc"+
56171 		"\u19d1\u0003\u001c\u000e\u0000\u19cd\u19ce\u0003\u0394\u01ca\u0000\u19ce"+
56172 		"\u19cf\u0005\u0294\u0000\u0000\u19cf\u19d1\u0001\u0000\u0000\u0000\u19d0"+
56173 		"\u19cc\u0001\u0000\u0000\u0000\u19d0\u19cd\u0001\u0000\u0000\u0000\u19d1"+
56174 		"\u19d3\u0001\u0000\u0000\u0000\u19d2\u19d4\u0005\u0295\u0000\u0000\u19d3"+
56175 		"\u19d2\u0001\u0000\u0000\u0000\u19d3\u19d4\u0001\u0000\u0000\u0000\u19d4"+
56176 		"\u19de\u0001\u0000\u0000\u0000\u19d5\u19d6\u0005%\u0000\u0000\u19d6\u19db"+
56177 		"\u0003\u0392\u01c9\u0000\u19d7\u19d8\u0005%\u0000\u0000\u19d8\u19da\u0003"+
56178 		"\u0392\u01c9\u0000\u19d9\u19d7\u0001\u0000\u0000\u0000\u19da\u19dd\u0001"+
56179 		"\u0000\u0000\u0000\u19db\u19d9\u0001\u0000\u0000\u0000\u19db\u19dc\u0001"+
56180 		"\u0000\u0000\u0000\u19dc\u19df\u0001\u0000\u0000\u0000\u19dd\u19db\u0001"+
56181 		"\u0000\u0000\u0000\u19de\u19d5\u0001\u0000\u0000\u0000\u19de\u19df\u0001"+
56182 		"\u0000\u0000\u0000\u19df\u0391\u0001\u0000\u0000\u0000\u19e0\u19e1\u0005"+
56183 		"\u028b\u0000\u0000\u19e1\u19e2\u0005\u0018\u0000\u0000\u19e2\u19f3\u0003"+
56184 		"\u0396\u01cb\u0000\u19e3\u19e4\u0005\u0296\u0000\u0000\u19e4\u19e5\u0005"+
56185 		"\u0018\u0000\u0000\u19e5\u19f3\u00032\u0019\u0000\u19e6\u19e7\u0005\u0277"+
56186 		"\u0000\u0000\u19e7\u19e8\u0005\u0018\u0000\u0000\u19e8\u19f3\u0003*\u0015"+
56187 		"\u0000\u19e9\u19ea\u0005\u0297\u0000\u0000\u19ea\u19eb\u0005\u0018\u0000"+
56188 		"\u0000\u19eb\u19f3\u0007\u0000\u0000\u0000\u19ec\u19ed\u0005\u0298\u0000"+
56189 		"\u0000\u19ed\u19ee\u0005\u0018\u0000\u0000\u19ee\u19f3\u0007\u0000\u0000"+
56190 		"\u0000\u19ef\u19f0\u0005\u0143\u0000\u0000\u19f0\u19f1\u0005\u0018\u0000"+
56191 		"\u0000\u19f1\u19f3\u0003*\u0015\u0000\u19f2\u19e0\u0001\u0000\u0000\u0000"+
56192 		"\u19f2\u19e3\u0001\u0000\u0000\u0000\u19f2\u19e6\u0001\u0000\u0000\u0000"+
56193 		"\u19f2\u19e9\u0001\u0000\u0000\u0000\u19f2\u19ec\u0001\u0000\u0000\u0000"+
56194 		"\u19f2\u19ef\u0001\u0000\u0000\u0000\u19f3\u0393\u0001\u0000\u0000\u0000"+
56195 		"\u19f4\u19f5\u0005\u02b3\u0000\u0000\u19f5\u0395\u0001\u0000\u0000\u0000"+
56196 		"\u19f6\u19f7\u0007\\\u0000\u0000\u19f7\u0397\u0001\u0000\u0000\u0000\u19f8"+
56197 		"\u1a02\u0005\u0299\u0000\u0000\u19f9\u19fa\u0005L\u0000\u0000\u19fa\u19ff"+
56198 		"\u0003\u039a\u01cd\u0000\u19fb\u19fc\u0005%\u0000\u0000\u19fc\u19fe\u0003"+
56199 		"\u039a\u01cd\u0000\u19fd\u19fb\u0001\u0000\u0000\u0000\u19fe\u1a01\u0001"+
56200 		"\u0000\u0000\u0000\u19ff\u19fd\u0001\u0000\u0000\u0000\u19ff\u1a00\u0001"+
56201 		"\u0000\u0000\u0000\u1a00\u1a03\u0001\u0000\u0000\u0000\u1a01\u19ff\u0001"+
56202 		"\u0000\u0000\u0000\u1a02\u19f9\u0001\u0000\u0000\u0000\u1a02\u1a03\u0001"+
56203 		"\u0000\u0000\u0000\u1a03\u1a0a\u0001\u0000\u0000\u0000\u1a04\u1a05\u0005"+
56204 		"\u0159\u0000\u0000\u1a05\u1a0a\u0003*\u0015\u0000\u1a06\u1a07\u0005\u0139"+
56205 		"\u0000\u0000\u1a07\u1a08\u0005B\u0000\u0000\u1a08\u1a0a\u0003*\u0015\u0000"+
56206 		"\u1a09\u19f8\u0001\u0000\u0000\u0000\u1a09\u1a04\u0001\u0000\u0000\u0000"+
56207 		"\u1a09\u1a06\u0001\u0000\u0000\u0000\u1a0a\u0399\u0001\u0000\u0000\u0000"+
56208 		"\u1a0b\u1a0c\u0005\u0296\u0000\u0000\u1a0c\u1a0d\u0005\u0018\u0000\u0000"+
56209 		"\u1a0d\u1a12\u00032\u0019\u0000\u1a0e\u1a0f\u0005\u0277\u0000\u0000\u1a0f"+
56210 		"\u1a10\u0005\u0018\u0000\u0000\u1a10\u1a12\u0003*\u0015\u0000\u1a11\u1a0b"+
56211 		"\u0001\u0000\u0000\u0000\u1a11\u1a0e\u0001\u0000\u0000\u0000\u1a12\u039b"+
56212 		"\u0001\u0000\u0000\u0000\u1a13\u1a14\u0005T\u0000\u0000\u1a14\u1a15\u0005"+
56213 		"\u014e\u0000\u0000\u1a15\u1a20\u0005\u028a\u0000\u0000\u1a16\u1a17\u0005"+
56214 		"L\u0000\u0000\u1a17\u1a1c\u0003\u039e\u01cf\u0000\u1a18\u1a19\u0005%\u0000"+
56215 		"\u0000\u1a19\u1a1b\u0003\u039e\u01cf\u0000\u1a1a\u1a18\u0001\u0000\u0000"+
56216 		"\u0000\u1a1b\u1a1e\u0001\u0000\u0000\u0000\u1a1c\u1a1a\u0001\u0000\u0000"+
56217 		"\u0000\u1a1c\u1a1d\u0001\u0000\u0000\u0000\u1a1d\u1a20\u0001\u0000\u0000"+
56218 		"\u0000\u1a1e\u1a1c\u0001\u0000\u0000\u0000\u1a1f\u1a13\u0001\u0000\u0000"+
56219 		"\u0000\u1a1f\u1a16\u0001\u0000\u0000\u0000\u1a20\u039d\u0001\u0000\u0000"+
56220 		"\u0000\u1a21\u1a22\u0005\u00d3\u0000\u0000\u1a22\u1a23\u0005\u0018\u0000"+
56221 		"\u0000\u1a23\u1a28\u0003\u001c\u000e\u0000\u1a24\u1a25\u0005%\u0000\u0000"+
56222 		"\u1a25\u1a26\u0005\u028b\u0000\u0000\u1a26\u1a27\u0005\u0018\u0000\u0000"+
56223 		"\u1a27\u1a29\u0003\u0396\u01cb\u0000\u1a28\u1a24\u0001\u0000\u0000\u0000"+
56224 		"\u1a28\u1a29\u0001\u0000\u0000\u0000\u1a29\u039f\u0001\u0000\u0000\u0000"+
56225 		"\u1a2a\u1a2b\u0005T\u0000\u0000\u1a2b\u1a2c\u0005\u014e\u0000\u0000\u1a2c"+
56226 		"\u1a2e\u0005\u028a\u0000\u0000\u1a2d\u1a2a\u0001\u0000\u0000\u0000\u1a2d"+
56227 		"\u1a2e\u0001\u0000\u0000\u0000\u1a2e\u1a2f\u0001\u0000\u0000\u0000\u1a2f"+
56228 		"\u1a30\u0005L\u0000\u0000\u1a30\u1a35\u0003\u03a2\u01d1\u0000\u1a31\u1a32"+
56229 		"\u0005%\u0000\u0000\u1a32\u1a34\u0003\u03a2\u01d1\u0000\u1a33\u1a31\u0001"+
56230 		"\u0000\u0000\u0000\u1a34\u1a37\u0001\u0000\u0000\u0000\u1a35\u1a33\u0001"+
56231 		"\u0000\u0000\u0000\u1a35\u1a36\u0001\u0000\u0000\u0000\u1a36\u03a1\u0001"+
56232 		"\u0000\u0000\u0000\u1a37\u1a35\u0001\u0000\u0000\u0000\u1a38\u1a39\u0005"+
56233 		"\u00d3\u0000\u0000\u1a39\u1a3a\u0005\u0018\u0000\u0000\u1a3a\u1a45\u0003"+
56234 		"\u001c\u000e\u0000\u1a3b\u1a3c\u0005\u028b\u0000\u0000\u1a3c\u1a3d\u0005"+
56235 		"\u0018\u0000\u0000\u1a3d\u1a45\u0003\u0396\u01cb\u0000\u1a3e\u1a3f\u0005"+
56236 		"\u0296\u0000\u0000\u1a3f\u1a40\u0005\u0018\u0000\u0000\u1a40\u1a45\u0003"+
56237 		"2\u0019\u0000\u1a41\u1a42\u0005\u0277\u0000\u0000\u1a42\u1a43\u0005\u0018"+
56238 		"\u0000\u0000\u1a43\u1a45\u0003*\u0015\u0000\u1a44\u1a38\u0001\u0000\u0000"+
56239 		"\u0000\u1a44\u1a3b\u0001\u0000\u0000\u0000\u1a44\u1a3e\u0001\u0000\u0000"+
56240 		"\u0000\u1a44\u1a41\u0001\u0000\u0000\u0000\u1a45\u03a3\u0001\u0000\u0000"+
56241 		"\u0000\u1a46\u1a47\u0005L\u0000\u0000\u1a47\u1a48\u0003\u03a6\u01d3\u0000"+
56242 		"\u1a48\u03a5\u0001\u0000\u0000\u0000\u1a49\u1a4a\u0005\u00d3\u0000\u0000"+
56243 		"\u1a4a\u1a4b\u0005\u0018\u0000\u0000\u1a4b\u1a50\u0003\u001c\u000e\u0000"+
56244 		"\u1a4c\u1a4d\u0005%\u0000\u0000\u1a4d\u1a4e\u0005\u028b\u0000\u0000\u1a4e"+
56245 		"\u1a4f\u0005\u0018\u0000\u0000\u1a4f\u1a51\u0003\u0396\u01cb\u0000\u1a50"+
56246 		"\u1a4c\u0001\u0000\u0000\u0000\u1a50\u1a51\u0001\u0000\u0000\u0000\u1a51"+
56247 		"\u03a7\u0001\u0000\u0000\u0000\u1a52\u1a53\u0005L\u0000\u0000\u1a53\u1a57"+
56248 		"\u0003\u03aa\u01d5\u0000\u1a54\u1a55\u0005T\u0000\u0000\u1a55\u1a57\u0005"+
56249 		"\u0299\u0000\u0000\u1a56\u1a52\u0001\u0000\u0000\u0000\u1a56\u1a54\u0001"+
56250 		"\u0000\u0000\u0000\u1a57\u03a9\u0001\u0000\u0000\u0000\u1a58\u1a59\u0005"+
56251 		"\u00d3\u0000\u0000\u1a59\u1a5a\u0005\u0018\u0000\u0000\u1a5a\u1a5c\u0003"+
56252 		"\u001c\u000e\u0000\u1a5b\u1a5d\u0005\u0295\u0000\u0000\u1a5c\u1a5b\u0001"+
56253 		"\u0000\u0000\u0000\u1a5c\u1a5d\u0001\u0000\u0000\u0000\u1a5d\u1a67\u0001"+
56254 		"\u0000\u0000\u0000\u1a5e\u1a5f\u0005%\u0000\u0000\u1a5f\u1a64\u0003\u03ac"+
56255 		"\u01d6\u0000\u1a60\u1a61\u0005%\u0000\u0000\u1a61\u1a63\u0003\u03ac\u01d6"+
56256 		"\u0000\u1a62\u1a60\u0001\u0000\u0000\u0000\u1a63\u1a66\u0001\u0000\u0000"+
56257 		"\u0000\u1a64\u1a62\u0001\u0000\u0000\u0000\u1a64\u1a65\u0001\u0000\u0000"+
56258 		"\u0000\u1a65\u1a68\u0001\u0000\u0000\u0000\u1a66\u1a64\u0001\u0000\u0000"+
56259 		"\u0000\u1a67\u1a5e\u0001\u0000\u0000\u0000\u1a67\u1a68\u0001\u0000\u0000"+
56260 		"\u0000\u1a68\u03ab\u0001\u0000\u0000\u0000\u1a69\u1a6a\u0005\u0297\u0000"+
56261 		"\u0000\u1a6a\u1a6b\u0005\u0018\u0000\u0000\u1a6b\u1a70\u0007\u0000\u0000"+
56262 		"\u0000\u1a6c\u1a6d\u0005\u0298\u0000\u0000\u1a6d\u1a6e\u0005\u0018\u0000"+
56263 		"\u0000\u1a6e\u1a70\u0007\u0000\u0000\u0000\u1a6f\u1a69\u0001\u0000\u0000"+
56264 		"\u0000\u1a6f\u1a6c\u0001\u0000\u0000\u0000\u1a70\u03ad\u0001\u0000\u0000"+
56265 		"\u0000\u1a71\u1a72\u00054\u0000\u0000\u1a72\u1a73\u0005\u010e\u0000\u0000"+
56266 		"\u1a73\u1a74\u0003\u037e\u01bf\u0000\u1a74\u03af\u0001\u0000\u0000\u0000"+
56267 		"\u1a75\u1a76\u00053\u0000\u0000\u1a76\u1a77\u0005\u010e\u0000\u0000\u1a77"+
56268 		"\u1a83\u0003\u037e\u01bf\u0000\u1a78\u1a84\u0003\u03b2\u01d9\u0000\u1a79"+
56269 		"\u1a7a\u0005L\u0000\u0000\u1a7a\u1a7f\u0003\u03b4\u01da\u0000\u1a7b\u1a7c"+
56270 		"\u0005%\u0000\u0000\u1a7c\u1a7e\u0003\u03b4\u01da\u0000\u1a7d\u1a7b\u0001"+
56271 		"\u0000\u0000\u0000\u1a7e\u1a81\u0001\u0000\u0000\u0000\u1a7f\u1a7d\u0001"+
56272 		"\u0000\u0000\u0000\u1a7f\u1a80\u0001\u0000\u0000\u0000\u1a80\u1a84\u0001"+
56273 		"\u0000\u0000\u0000\u1a81\u1a7f\u0001\u0000\u0000\u0000\u1a82\u1a84\u0003"+
56274 		"\u03b8\u01dc\u0000\u1a83\u1a78\u0001\u0000\u0000\u0000\u1a83\u1a79\u0001"+
56275 		"\u0000\u0000\u0000\u1a83\u1a82\u0001\u0000\u0000\u0000\u1a84\u03b1\u0001"+
56276 		"\u0000\u0000\u0000\u1a85\u1a86\u0007\'\u0000\u0000\u1a86\u03b3\u0001\u0000"+
56277 		"\u0000\u0000\u1a87\u1a88\u0005\u00d3\u0000\u0000\u1a88\u1a8d\u0005\u0018"+
56278 		"\u0000\u0000\u1a89\u1a8e\u0003\u001c\u000e\u0000\u1a8a\u1a8b\u0003\u0394"+
56279 		"\u01ca\u0000\u1a8b\u1a8c\u0005\u0294\u0000\u0000\u1a8c\u1a8e\u0001\u0000"+
56280 		"\u0000\u0000\u1a8d\u1a89\u0001\u0000\u0000\u0000\u1a8d\u1a8a\u0001\u0000"+
56281 		"\u0000\u0000\u1a8e\u1a96\u0001\u0000\u0000\u0000\u1a8f\u1a90\u0005\u0289"+
56282 		"\u0000\u0000\u1a90\u1a91\u0005\u0018\u0000\u0000\u1a91\u1a97\u0003\u001c"+
56283 		"\u000e\u0000\u1a92\u1a94\u0003\u03b6\u01db\u0000\u1a93\u1a95\u0003\u03b6"+
56284 		"\u01db\u0000\u1a94\u1a93\u0001\u0000\u0000\u0000\u1a94\u1a95\u0001\u0000"+
56285 		"\u0000\u0000\u1a95\u1a97\u0001\u0000\u0000\u0000\u1a96\u1a8f\u0001\u0000"+
56286 		"\u0000\u0000\u1a96\u1a92\u0001\u0000\u0000\u0000\u1a96\u1a97\u0001\u0000"+
56287 		"\u0000\u0000\u1a97\u1aad\u0001\u0000\u0000\u0000\u1a98\u1a99\u0005\u0296"+
56288 		"\u0000\u0000\u1a99\u1a9a\u0005\u0018\u0000\u0000\u1a9a\u1aad\u00032\u0019"+
56289 		"\u0000\u1a9b\u1a9c\u0005\u0277\u0000\u0000\u1a9c\u1a9d\u0005\u0018\u0000"+
56290 		"\u0000\u1a9d\u1aad\u0003*\u0015\u0000\u1a9e\u1a9f\u0005\u00a8\u0000\u0000"+
56291 		"\u1a9f\u1aa0\u0005\u0018\u0000\u0000\u1aa0\u1aad\u0003\u037e\u01bf\u0000"+
56292 		"\u1aa1\u1aa2\u0005\u0298\u0000\u0000\u1aa2\u1aa3\u0005\u0018\u0000\u0000"+
56293 		"\u1aa3\u1aad\u0007\u0000\u0000\u0000\u1aa4\u1aa5\u0005\u0297\u0000\u0000"+
56294 		"\u1aa5\u1aa6\u0005\u0018\u0000\u0000\u1aa6\u1aad\u0007\u0000\u0000\u0000"+
56295 		"\u1aa7\u1aa8\u0005\u0143\u0000\u0000\u1aa8\u1aa9\u0005\u0018\u0000\u0000"+
56296 		"\u1aa9\u1aad\u0003*\u0015\u0000\u1aaa\u1aab\u0005\u00e5\u0000\u0000\u1aab"+
56297 		"\u1aad\u0005\u0143\u0000\u0000\u1aac\u1a87\u0001\u0000\u0000\u0000\u1aac"+
56298 		"\u1a98\u0001\u0000\u0000\u0000\u1aac\u1a9b\u0001\u0000\u0000\u0000\u1aac"+
56299 		"\u1a9e\u0001\u0000\u0000\u0000\u1aac\u1aa1\u0001\u0000\u0000\u0000\u1aac"+
56300 		"\u1aa4\u0001\u0000\u0000\u0000\u1aac\u1aa7\u0001\u0000\u0000\u0000\u1aac"+
56301 		"\u1aaa\u0001\u0000\u0000\u0000\u1aad\u03b5\u0001\u0000\u0000\u0000\u1aae"+
56302 		"\u1aaf\u0007]\u0000\u0000\u1aaf\u03b7\u0001\u0000\u0000\u0000\u1ab0\u1ab1"+
56303 		"\u00059\u0000\u0000\u1ab1\u1ab2\u0005\u0143\u0000\u0000\u1ab2\u1ab7\u0003"+
56304 		"*\u0015\u0000\u1ab3\u1ab4\u00054\u0000\u0000\u1ab4\u1ab5\u0005\u0143\u0000"+
56305 		"\u0000\u1ab5\u1ab7\u0003*\u0015\u0000\u1ab6\u1ab0\u0001\u0000\u0000\u0000"+
56306 		"\u1ab6\u1ab3\u0001\u0000\u0000\u0000\u1ab7\u03b9\u0001\u0000\u0000\u0000"+
56307 		"\u1ab8\u1abd\u0005\u029b\u0000\u0000\u1ab9\u1aba\u0005L\u0000\u0000\u1aba"+
56308 		"\u1abb\u0005\u029c\u0000\u0000\u1abb\u1abc\u0005\u0018\u0000\u0000\u1abc"+
56309 		"\u1abe\u0003\u00d0h\u0000\u1abd\u1ab9\u0001\u0000\u0000\u0000\u1abd\u1abe"+
56310 		"\u0001\u0000\u0000\u0000\u1abe\u03bb\u0001\u0000\u0000\u0000\u0311\u03f6"+
56311 		"\u03f9\u0409\u0415\u041b\u041d\u041f\u0426\u042c\u042e\u0436\u043a\u0442"+
56312 		"\u0446\u044c\u0457\u045c\u0467\u0473\u0477\u0484\u048b\u0490\u0495\u049c"+
56313 		"\u04a3\u04ac\u04b1\u04b3\u04ba\u04c5\u04c9\u04da\u04e5\u04eb\u04f2\u04f6"+
56314 		"\u0500\u0506\u0508\u050d\u051a\u0524\u0526\u0535\u0544\u0546\u054d\u0554"+
56315 		"\u055d\u0564\u056d\u0573\u0576\u0599\u059b\u05a7\u05af\u05b5\u05bf\u05c6"+
56316 		"\u05cc\u05d1\u05d8\u05dc\u05e7\u05f7\u0602\u0607\u0612\u0616\u061d\u0624"+
56317 		"\u0628\u062d\u0630\u0640\u0649\u0655\u0657\u065c\u0660\u0663\u0668\u0671"+
56318 		"\u0676\u067e\u068a\u0693\u0699\u06a1\u06a4\u06a7\u06b2\u06ba\u06c3\u06cb"+
56319 		"\u06d3\u06d7\u06e4\u06e6\u06ef\u0704\u0709\u0715\u0722\u072b\u0738\u074b"+
56320 		"\u0754\u0758\u0771\u077b\u0785\u078e\u079c\u07a4\u07aa\u07b2\u07bd\u07c4"+
56321 		"\u07ce\u07d3\u07f4\u07fd\u0800\u0807\u080e\u0815\u081e\u0825\u082b\u0832"+
56322 		"\u0838\u083f\u0845\u084c\u0852\u0859\u0860\u0862\u0867\u086e\u0878\u0882"+
56323 		"\u088e\u0893\u089c\u08a3\u08a8\u08b7\u08c1\u08cc\u08cf\u08db\u08df\u08f1"+
56324 		"\u08f6\u08fa\u08ff\u0903\u090a\u090f\u0917\u0920\u0924\u0928\u092b\u092e"+
56325 		"\u0931\u093f\u0944\u0949\u095b\u095d\u0968\u0970\u0975\u097e\u0985\u098b"+
56326 		"\u0994\u0997\u099a\u099d\u09a6\u09ae\u09b7\u09be\u09c1\u09c9\u09cb\u09ce"+
56327 		"\u09d8\u09dd\u09e2\u09e6\u09e9\u09ed\u09f0\u09f5\u09fd\u0a06\u0a0e\u0a11"+
56328 		"\u0a14\u0a17\u0a1d\u0a21\u0a29\u0a3f\u0a41\u0a46\u0a48\u0a4f\u0a51\u0a55"+
56329 		"\u0a5d\u0a6b\u0a74\u0a83\u0a89\u0a8d\u0a94\u0aa8\u0ab1\u0ab4\u0aca\u0acc"+
56330 		"\u0ad7\u0ae7\u0aec\u0af0\u0af5\u0afc\u0b06\u0b0d\u0b10\u0b1b\u0b1f\u0b24"+
56331 		"\u0b2a\u0b2f\u0b32\u0b3d\u0b46\u0b4a\u0b59\u0b60\u0b6c\u0b6f\u0b73\u0b77"+
56332 		"\u0b80\u0b83\u0b86\u0b8d\u0b92\u0b9b\u0baf\u0bb1\u0bb7\u0bbe\u0bc3\u0bca"+
56333 		"\u0bce\u0bd4\u0bda\u0bdf\u0be5\u0bec\u0bf2\u0bfb\u0c02\u0c04\u0c0a\u0c0d"+
56334 		"\u0c10\u0c15\u0c1c\u0c25\u0c2a\u0c33\u0c35\u0c3a\u0c43\u0c45\u0c48\u0c5a"+
56335 		"\u0c5c\u0c66\u0c6d\u0c70\u0c74\u0c7c\u0c7f\u0c83\u0c8a\u0c91\u0c9c\u0cb8"+
56336 		"\u0cc0\u0cd2\u0cd4\u0cdb\u0cde\u0ce0\u0ce7\u0ce9\u0cee\u0cf5\u0cfa\u0cfd"+
56337 		"\u0d01\u0d0a\u0d0d\u0d15\u0d19\u0d1d\u0d22\u0d27\u0d2b\u0d36\u0d3d\u0d43"+
56338 		"\u0d47\u0d4b\u0d53\u0d55\u0d58\u0d5f\u0d64\u0d6d\u0d72\u0d7a\u0d81\u0d89"+
56339 		"\u0d92\u0d9e\u0dae\u0db1\u0db3\u0db6\u0db9\u0dbc\u0dbf\u0dd1\u0dd6\u0ddb"+
56340 		"\u0de0\u0de3\u0de7\u0def\u0dfb\u0dfe\u0e01\u0e10\u0e13\u0e16\u0e1a\u0e1e"+
56341 		"\u0e28\u0e2b\u0e2e\u0e39\u0e3e\u0e44\u0e48\u0e4b\u0e56\u0e59\u0e5e\u0e60"+
56342 		"\u0e6c\u0e6f\u0e76\u0e79\u0e7d\u0e81\u0e84\u0e87\u0e8b\u0e96\u0e99\u0ea0"+
56343 		"\u0ea3\u0ea7\u0eae\u0eb3\u0ebe\u0ec3\u0ec5\u0ed2\u0edd\u0ee5\u0ee8\u0eec"+
56344 		"\u0ef2\u0efc\u0f06\u0f0b\u0f17\u0f1d\u0f20\u0f23\u0f26\u0f29\u0f2c\u0f2f"+
56345 		"\u0f33\u0f38\u0f3f\u0f46\u0f53\u0f5f\u0f65\u0f6e\u0f71\u0f75\u0f79\u0f82"+
56346 		"\u0f87\u0f90\u0f92\u0f97\u0f99\u0fa0\u0fab\u0fb4\u0fbb\u0fbd\u0fc6\u0fcb"+
56347 		"\u0fd2\u0fd9\u0feb\u0ff0\u0ff4\u100f\u1012\u101b\u1034\u1037\u1039\u103e"+
56348 		"\u1046\u105b\u105d\u1066\u1069\u1078\u107d\u1086\u109a\u109d\u10a1\u10ad"+
56349 		"\u10af\u10bc\u10be\u10c8\u10f5\u10fb\u1104\u1113\u1117\u1120\u1126\u1130"+
56350 		"\u1139\u1144\u1150\u1152\u115a\u1168\u1170\u1175\u1177\u1180\u1186\u119b"+
56351 		"\u11a2\u11aa\u11af\u11b1\u11da\u11df\u11ee\u11f6\u120d\u1216\u121e\u1229"+
56352 		"\u122e\u1236\u1241\u124c\u1255\u125c\u1260\u1266\u127b\u1289\u128c\u1297"+
56353 		"\u129c\u129f\u12a3\u12a6\u12aa\u12ad\u12b2\u12b5\u12b8\u12be\u12c1\u12c9"+
56354 		"\u12cd\u12d0\u12d5\u12d9\u12de\u12e2\u12ee\u12f2\u12fa\u1301\u1305\u1308"+
56355 		"\u130c\u1310\u1313\u1316\u131a\u131d\u1320\u1324\u1327\u132a\u1335\u1339"+
56356 		"\u133e\u1342\u134a\u134e\u1353\u1357\u135b\u135f\u1362\u1365\u1368\u136b"+
56357 		"\u136e\u1374\u137a\u1380\u1383\u1386\u1389\u138d\u1391\u1394\u1398\u13a2"+
56358 		"\u13a6\u13b5\u13bc\u13c1\u13c4\u13c8\u13cc\u13d2\u13d5\u13d8\u13de\u13e1"+
56359 		"\u13e5\u13ea\u13ec\u13f2\u13fe\u1410\u1415\u141d\u1422\u1424\u142b\u1432"+
56360 		"\u1435\u143d\u1467\u1469\u147e\u1485\u14bd\u14c3\u14cb\u14ce\u14d8\u14da"+
56361 		"\u14dc\u14e1\u14e3\u14e5\u14eb\u14ed\u14f4\u14fa\u14fc\u14fe\u1500\u1505"+
56362 		"\u1509\u1511\u1513\u151d\u151f\u1523\u1527\u1529\u152e\u1530\u1533\u153c"+
56363 		"\u1546\u1552\u1557\u155f\u1565\u1569\u156e\u1576\u157c\u1580\u1585\u1589"+
56364 		"\u1590\u1599\u15a0\u15a7\u15af\u15b3\u15b8\u15c0\u15c4\u15c8\u15cd\u15d5"+
56365 		"\u15d9\u15de\u15e3\u15eb\u15ef\u15f3\u15f8\u1600\u1604\u160c\u1621\u1633"+
56366 		"\u163e\u1653\u166d\u1682\u1686\u168b\u1694\u1696\u16a8\u16bc\u16c7\u16da"+
56367 		"\u16de\u16e6\u16ea\u16f5\u1711\u1717\u1734\u173b\u173f\u1744\u174e\u1759"+
56368 		"\u1763\u176c\u1782\u178f\u1796\u17a2\u17af\u17bc\u17c7\u17d3\u17d9\u17df"+
56369 		"\u17e5\u17f1\u17fe\u180b\u1817\u181d\u1823\u182a\u182e\u183b\u1848\u1851"+
56370 		"\u185b\u188b\u1895\u1897\u18a3\u18a9\u18b1\u18b4\u18bd\u18c0\u18cd\u18d0"+
56371 		"\u18d7\u18dd\u18e4\u18ec\u18ef\u18fa\u18fd\u1906\u190f\u1917\u1919\u1922"+
56372 		"\u1927\u1929\u192f\u193a\u193d\u193f\u1947\u194d\u1957\u1962\u1967\u1974"+
56373 		"\u197a\u1983\u198e\u1994\u1999\u199b\u19a2\u19a7\u19b8\u19c2\u19c8\u19d0"+
56374 		"\u19d3\u19db\u19de\u19f2\u19ff\u1a02\u1a09\u1a11\u1a1c\u1a1f\u1a28\u1a2d"+
56375 		"\u1a35\u1a44\u1a50\u1a56\u1a5c\u1a64\u1a67\u1a6f\u1a7f\u1a83\u1a8d\u1a94"+
56376 		"\u1a96\u1aac\u1ab6\u1abd";
56377 	public static final String _serializedATN = Utils.join(
56378 		new String[] {
56379 			_serializedATNSegment0,
56380 			_serializedATNSegment1,
56381 			_serializedATNSegment2
56382 		},
56383 		""
56384 	);
56385 	public static final ATN _ATN =
56386 		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
56387 	static {
56388 		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
56389 		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
56390 			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
56391 		}
56392 	}
56393 }